Me gustaría buscar una aparición en un archivo de texto, luego imprimir las siguientes N líneas después de cada aparición encontrada. ¿Algunas ideas?
fuente
Me gustaría buscar una aparición en un archivo de texto, luego imprimir las siguientes N líneas después de cada aparición encontrada. ¿Algunas ideas?
Grep tiene las siguientes opciones que le permitirán hacer esto (y cosas por el estilo). Es posible que desee consultar la página de manual para obtener más información:
-A num Imprime las líneas numéricas del contexto final después de cada coincidencia. Vea también las opciones -B y -C.
-B num Imprime las líneas numéricas del contexto principal antes de cada coincidencia. Vea también las opciones -A y -C.
-C [num] Imprime las líneas numéricas del contexto inicial y final que rodean cada coincidencia. El valor predeterminado es 2 y es equivalente a -A 2 -B 2. Nota: no se puede dar espacio en blanco entre la opción y su argumento.
Si tiene GNU grep
, es la opción -A
/ --after-context
. De lo contrario, puedes hacerlo con awk
.
awk '/regex/ {p = N}
p > 0 {print $0; p--}' filename
awk '/regex/{p=2} p > 0 {print $0; p--}' filename
- funciona, el tuyo no.Use el
-A
argumento paragrep
especificar cuántas líneas más allá de la coincidencia se generarán.fuente
Imprimir N líneas después de las líneas coincidentes
Se puede utilizar
grep
con la-A n
opción de imprimir después de N líneas líneas coincidentes.Por ejemplo:
Otras opciones relacionadas:
Imprima N líneas antes de las líneas coincidentes
Con la
-B n
opción puede imprimir N líneas antes de hacer coincidir las líneas.Imprima N líneas antes y después de las líneas coincidentes
Con la
-C n
opción puede imprimir N líneas antes y después de las líneas coincidentes.fuente