sed -n '/pattern/ {p;n;p;n;p;...}' <filename> aquí p- & gt; imprimir, n - & gt; llegar a la siguiente línea Así que el número de p es el número de líneas a imprimir.
Actualizar:
según la sugerencia de Jonathan Leffler, si alguna de las siguientes 10 líneas contiene el patrón, el conteo debe comenzar desde esa línea para que
pattern ->start printing from here to next 10 lines
blah
blah
pattern ->forget about the last 2 lines, start counting from here
blah
blah
Impresionante, ¿cómo puedo hacer de esta una función como: jobcheck () {awk '/ $ 1 / {for (i = 0; i & lt; 10; i ++) {print; getline}}' $ 2}
Actualicé la respuesta para eso :)
Tenga en cuenta que si los patrones aparecen en las siguientes 10 líneas, debería (probablemente) restablecer el 'contador de impresión'. O diseñarlo para que cuando encuentres la coincidencia, configures max_print = NR + 10; y luego para cada línea, if (NR < max_print) print
Jonathan Leffler
Sí, esa es una buena sugerencia, actualicé la respuesta :)
hmm Puse esta función en mi ~ / .bashrc ya que es breve pero recibí un error al decir error de sintaxis: final inesperado del archivo. Aunque ni siquiera puse la función al final del archivo. ¿Sabes cuál podría ser el problema?
Dice opción ilegal para mí. Estoy en bash 3.0.19 creo
Su versión grep es la información importante. grep -V
Fred Thomsen
sí, incluso eso es una opción ilegal. ¿Asumo que mis cosas están realmente desactualizadas?
@yatici actualizado con un awk enfoque
Alex
Puede que estés usando alguna versión reducida de grep. Si estás en una distribución basada en RPM, probablemente puedas hacer rpm -ql grep o en una distribución basada en DEB, dpkg -l grep para conseguir la versión.
max_print = NR + 10;
y luego para cada línea,if (NR < max_print) print
Utilizando grep 2.10:
Imprimirá 10 líneas después del partido.
Desde el grep man page :
Usando GNU awk 3.1.8:
fuente
awk
enfoquerpm -ql grep
o en una distribución basada en DEB,dpkg -l grep
para conseguir la versión.Yo uso
o
fuente