varios una test solo siguientes script regulares regresará que patrones palabras palabra manejo líneas los linea expresiones exacta cuál con comiencen comandos comando cadenas buscar bash shell ubuntu

bash - una - manejo de cadenas en shell script



¿Cómo busco líneas antes/después del resultado grep en bash? (4)

Hola, soy muy nuevo en la programación bash. Quiero una forma de buscar en un Texto dado. Para eso uso la función grep :

grep -i "my_regex"

Eso funciona. Pero dados los data como este:

This is the test data This is the error data as follows . . . . . . . . . . . . . . . . . . . . . . Error data ends

Una vez que encontré el error palabra (usando grep -i error data ), deseo encontrar las 10 líneas que siguen al error palabra. Entonces mi salida debería ser:

. . . . . . . . . . . . . . . . . . . . . . Error data ends

¿Hay alguna forma de hacerlo?


Esto imprime 10 líneas de contexto posterior después de hacer coincidir las líneas

grep -i "my_regex" -A 10

Si necesita imprimir 10 líneas de contexto principal antes de hacer coincidir líneas,

grep -i "my_regex" -B 10

Y si necesita imprimir 10 líneas de contexto de salida inicial y final.

grep -i "my_regex" -C 10

Ejemplo

user@box:~$ cat out line 1 line 2 line 3 line 4 line 5 my_regex line 6 line 7 line 8 line 9 user@box:~$

Grep normal

user@box:~$ grep my_regex out line 5 my_regex user@box:~$

Grep líneas coincidentes exactas y 2 líneas después

user@box:~$ grep -A 2 my_regex out line 5 my_regex line 6 line 7 user@box:~$

Grep líneas coincidentes exactas y 2 líneas antes

user@box:~$ grep -B 2 my_regex out line 3 line 4 line 5 my_regex user@box:~$

Grep líneas coincidentes y 2 líneas antes y después

user@box:~$ grep -C 2 my_regex out line 3 line 4 line 5 my_regex line 6 line 7 user@box:~$

Referencia: manpage grep

-A num --after-context=num Print num lines of trailing context after matching lines. -B num --before-context=num Print num lines of leading context before matching lines. -C num -num --context=num Print num lines of leading and trailing output context.


La forma de hacerlo es cerca de la parte superior de la página del manual

grep -i -A 10 ''error data''


Prueba esto:

grep -i -A 10 "my_regex"

-A 10 significa, imprime diez líneas después del partido en "my_regex"


Puede usar las líneas -B y -A para imprimir antes y después del partido.

grep -i -B 10 ''error'' data

Imprimirá las 10 líneas antes del partido, incluida la línea correspondiente.