grep search + próxima línea


18

Con el grepcomando, encontré el texto que necesito de la siguiente manera:

grep 'C02' ~/temp/log.txt Ahora, donde encuentre la cadena deseada, me gustaría imprimir la línea que sigue a la cadena encontrada.

Por ejemplo, digamos que el texto deseado es 'abc', y abc se encuentra en la línea 12, también me gustaría imprimir la línea 13.


3
grep -A1 'abc' ~/temp/log.txtpara 1 línea de contexto A después del partido - vea la Context Line Controlsubsección del manual ( man grep)
steeldriver

1
gnu grep lo hace fácil; posix no especifica la bandera -A
Jeff Schaller

1
¡Hola y bienvenidos a Stack Exchange! en SE, se espera que haga una investigación básica antes de venir aquí para obtener ayuda. por ejemplo, una búsqueda de "grep show next line" arrojó una respuesta indirecta en el primer resultado y una respuesta directa en el segundo. ¿Qué has hecho para tratar de resolver este problema?
Strugee

Respuestas:


25

Si está utilizando el sistema Linux, puede intentar:

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.

Puedes usar awk también como:

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

1
también,sed -n '/C02/{N; p}' ~/temp/log.txt
Sundeep
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.