¿Cómo puedo hacer que grep imprima las líneas debajo y encima de cada línea coincidente? [duplicar]

Resuelto poiuytrez asked hace 15 años • 3 respuestas

Quiero buscar la palabra en cada línea FAILEDy luego imprimir la línea encima y debajo de cada línea coincidente, así como la línea coincidente.


Aporte:

id : 15
Status : SUCCESS
Message : no problem

id : 15
Status : FAILED
Message : connection error

Salida deseada para grep 'FAILED':

id : 15
Status : FAILED
Message : connection error
poiuytrez avatar Jul 02 '09 12:07 poiuytrez
Aceptado

La opción de grep -A 1le dará una línea después; -B 1te dará una línea antes; y -C 1combina ambos para darle una línea antes y después, -1hace lo mismo.

pgs avatar Jul 02 '2009 05:07 pgs

Utilice la opción -B, -A o -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
...
tefozi avatar Jul 02 '2009 05:07 tefozi

Utilice los modificadores -A y -B (es decir, líneas posteriores y líneas anteriores):

grep -A 1 -B 1 FAILED file.txt
Milan Babuškov avatar Jul 02 '2009 05:07 Milan Babuškov