recherche grep + ligne suivante


18

Avec la grepcommande, j'ai trouvé le texte dont j'ai besoin comme suit:

grep 'C02' ~/temp/log.txt Maintenant, chaque fois que je trouve la chaîne souhaitée, je voudrais imprimer la ligne suivant la chaîne trouvée.

Par exemple, disons que le texte souhaité est 'abc', et abc se trouve à la ligne 12, je voudrais également imprimer la ligne 13.


3
grep -A1 'abc' ~/temp/log.txtpour 1 ligne de contexte A près avoir le match - voir le Context Line Controlparagraphe du (manuel man grep)
steeldriver

1
gnu grep facilite les choses; posix ne spécifie pas l'indicateur -A
Jeff Schaller

1
salut et bienvenue sur Stack Exchange! sur SE, on s'attend à ce que vous fassiez quelques recherches de base avant de venir ici pour obtenir de l'aide. par exemple, une recherche de «grep show next line» a renvoyé une réponse indirecte dans le premier résultat et une réponse directe dans le second. qu'avez-vous fait pour essayer de résoudre ce problème déjà?
strugee

Réponses:


25

Si vous utilisez un système Linux, vous pouvez essayer:

grep -A1 "C02" ~/temp/log.txt


OPTIONS
       -A NUM, --after-context=NUM
              Print NUM lines of trailing context after matching lines.  Places a line containing -- between contiguous groups of matches.
       -B NUM, --before-context=NUM
              Print NUM lines of leading context before matching lines.  Places a line containing -- between contiguous groups of matches.
       -C NUM, --context=NUM
              Print NUM lines of output context.  Places a line containing -- between contiguous groups of matches.

Vous pouvez également utiliser awk comme:

awk '/C02/{print;getline;print}' ~/temp/log.txt

1
aussi,sed -n '/C02/{N; p}' ~/temp/log.txt
Sundeep
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.