web-dev-qa-db-fra.com

Comment puis-je faire en sorte que grep imprime les lignes situées au-dessous et au-dessus de chaque ligne correspondante?

Duplicate possible:
grep un fichier, mais montre plusieurs lignes adjacentes?

Je dois analyser un très gros fichier et utiliser la commande grep (ou tout autre outil).

Je souhaite rechercher le mot FAILED dans chaque ligne du journal, puis imprimer la ligne située au-dessus et au-dessous de chaque ligne correspondante ainsi que la ligne correspondante.

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
324
poiuytrez

l'option -A 1 de grep vous donnera une ligne après; -B 1 vous donnera une ligne avant; et -C 1 combine les deux pour vous donner une ligne à la fois avant et après, -1 fait la même chose.

671
pgs

Utiliser les options -B, -A ou -C

grep --help
...
-B, --before-context=NUM  print NUM lines of leading context
-A, --after-context=NUM   print NUM lines of trailing context
-C, --context=NUM         print NUM lines of output context
-NUM                      same as --context=NUM
...
45
zinovii

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

grep -A 1 -B 1 FAILED file.txt
33
Milan Babuškov