Bonjour,
Comment faire pour afficher les 3 lignes qui suivent à chaque fois qu'on rencontre une phrase clé ?
Version imprimable
Bonjour,
Comment faire pour afficher les 3 lignes qui suivent à chaque fois qu'on rencontre une phrase clé ?
Bonjour,
Le plus simple, c'est de le faire avec grep et sont connecteur -A:
Code:grep -A 3 motif fichier
effectivement c'est efficace. Sauf les -- qui sont pas jolis. Je suppose que je m'en sors avec un grep ['alpha'] en deuxième passe.
Code:grep --no-group-separator -A 3 motif fichier
ah ben oui, terrible. Nickel, merci beaucoup !
On peut bien sûr aussi le faire avec awk, ce qui a l'avantage d'être portable :
Code:awk '/motif/{i=4}i-->0' fichier
J'aime bien cet uniligne awk.
PS: petit détail, pour les 3 lignes suivantes faut que i=4.
Oui, 4, bien sûr. C'est corrigé. Merci !
et oui ça marche aussi, même si je ne comprends rien à cette syntaxe.
Une version commentée:
Code:
1
2 /motif/ {i=4} # si la ligne contient "motif", j'affecte la valeur 4 à la variable i. Dans tous les cas, je passe au test suivant i-- > 0 # si la variable i contient une valeur supérieure à zéro, j'effectue l'action par défaut qui est d'afficher la ligne courante. Dans tous les cas, je décrémente la valeur de i après avoir fait le test.
d'accord, c'est plus clair effectivement.