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.