Hola, soy muy nuevo en la programación bash. Quiero una forma de buscar en un texto dado. Para eso utilizo la grepfunción:
grep -i "my_regex"
Eso funciona. Pero dado lo datasiguiente:
This is the test data
This is the error data as follows
. . .
. . . .
. . . . . .
. . . . . . . . .
Error data ends
Una vez que encontré la palabra error(usando grep -i error data), deseo encontrar las 10 líneas que siguen a la palabra error. Entonces mi salida debería ser:
. . .
. . . .
. . . . . .
. . . . . . . . .
Error data ends
¿Hay alguna forma de hacerlo?

error.Respuestas:
Puede usar
-By-Apara imprimir líneas antes y después del partido.Imprimirá las 10 líneas antes del partido, incluida la línea correspondiente.
fuente
test=$(grep -i -B 10 'error' data), e imprimirla usandoecho $test, obtengo las líneas rectas largas como salida.echo "$test"lugar deecho $test-C 10imprimirá 10 líneas antes y después de una sola vez!Esto imprime 10 líneas de contexto final después de las líneas coincidentes
Si necesita imprimir 10 líneas de contexto principal antes de hacer coincidir las líneas,
Y si necesita imprimir 10 líneas de contexto de salida inicial y final.
Ejemplo
Grep normal
Grep líneas coincidentes exactas y 2 líneas después
Grep líneas coincidentes exactas y 2 líneas antes
Grep líneas coincidentes exactas y 2 líneas antes y después
Referencia: manpage grep
fuente
La forma de hacerlo es cerca de la parte superior de la página del manual
fuente
Prueba esto:
-A 10 significa, imprimir diez líneas después del partido a "my_regex"
fuente