Disons que j'ai un fichier qui ressemble à ceci:scripts Shell et des expressions régulières (? Sed, awk, grep ...)
user ID time started time ended yes/no
3523 15:00 0 yes
2356 12:13 12:18 yes
4690 09:10 0 no
Je veux écrire script shell qui choisir tous les lignes dans le fichier que ont un temps terminé de '0' et 'oui'.
Pour cet exemple, ce serait la première ligne seulement:
3523 15:00 0 yes
Wow, je ne savais pas comment cela est simple à faire avec awk. En tant que question secondaire avant la déclaration d'impression devez-vous écrire END? –
Jetez un oeil à la page de man pour awk. Un script awk est essentiellement une liste de paires CONDITION ACTION. Dans ce cas, la condition est 3 $ = 0 et 4 $ = oui. L'action correspondante est print. END est une condition qui est vraie après la lecture de la dernière ligne du fichier. Ainsi, toutes les actions placées après cela n'auront lieu qu'à la fin du fichier. À ce stade, l'impression n'aura aucune ligne à afficher. En pratique, d'autres clauses auraient stocké des valeurs dans les globales pour les actions de END à utiliser. – jtdubs
Lorsque vous vous sentez à l'aise avec awk, vous pouvez supprimer le corps '{print}' (qui est l'action par défaut): 'awk '$ 3 == 0 && $ 4 ==" oui "' fichier' –