J'aimerais grep pour une occurrence dans un fichier texte, puis imprimer les lignes N suivantes après chaque occurrence. Des idées?
Grep a les options suivantes qui vous permettront de faire cela (et des choses comme ça). Vous voudrez peut-être consulter la page man pour plus d'informations:
-A num Print num lignes de contexte arrière après chaque correspondance. Voir aussi les options -B et -C.
-B num Impression des lignes de contexte avant chaque match. Voir aussi les options -A et -C.
-C [num] Imprimer nombre de lignes de contexte avancé et de retour entourant chaque match. La valeur par défaut est 2 et équivaut à -A 2 -B 2. Remarque: aucun espace blanc ne peut être donné entre l'option et son argument.
Si vous avez GNU grep
, c'est l'option -A
/ -A
--after-context
. Sinon, vous pouvez le faire avec awk
.
awk '/regex/ {p = N} p > 0 {print $0; p--}' filename
Utilisez l'argument -A
pour grep
pour spécifier le nombre de lignes au-delà de la correspondance à la sortie.
Imprimez N lignes après les lignes correspondantes
Vous pouvez utiliser grep
avec -A n
option pour imprimer N lignes après correspondance des lignes.
Par exemple:
$ cat mytext.txt Line1 Line2 Line3 Line4 Line5 Line6 Line7 Line8 Line9 Line10 $ grep -wns Line5 mytext.txt -A 2 5:Line5 6-Line6 7-Line7
Autres options connexes:
Imprimez des lignes N avant les lignes correspondantes
En utilisant l'option -B n
, vous pouvez imprimer des lignes N avant d'aligner les lignes.
$ grep -wns Line5 mytext.txt -B 2 3-Line3 4-Line4 5:Line5
Imprimer les lignes N avant et après les lignes correspondantes
En utilisant l'option -Cn, vous pouvez imprimer N lignes avant et après les lignes correspondantes.
$ grep -wns Line5 mytext.txt -C 2 3-Line3 4-Line4 5:Line5 6-Line6 7-Line7