473 votes

Comment puis-je faire grep imprimer les lignes au-dessous et au-dessus de chaque ligne correspondante?

Double Possible:
grep un fichier, mais de montrer autour de plusieurs lignes?

Je parse un fichier très volumineux, et je veux utiliser la commande grep (ou tout autre outil).

Je recherche chaque ligne de journal pour le mot - FAILED, puis imprimer la ligne ci-dessus et en dessous de chaque ligne assortie, ainsi que la mise en correspondance de la ligne.

Par exemple:

id : 15
Satus : SUCCESS
Message : no problem

id : 15
Satus : FAILED
Message : connection error

Et j'ai besoin d'imprimer:

id : 15
Satus : FAILED
Message : connection error

937voto

pgs Points 3453

L'option -A 1 grep vous donnera une vie après; -B 1 vous donnera une ligne auparavant; et -C 1 combinent les deux pour vous donner une ligne avant et après.

67voto

zdmytriv Points 2660

Utilisez l'option -B et -A

 grep --help
...
-B, --before-context=NUM  print NUM lines of leading context
-A, --after-context=NUM   print NUM lines of trailing context
...
 

47voto

Milan Babuškov Points 20423

Utilisez les commutateurs -A et -B (lignes moyennes après et lignes avant):

 grep -A 1 -B 1 FAILED file.txt
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X