Me gustaría grep
para una cadena, pero también mostrar las cinco líneas anteriores y las siguientes cinco líneas, así como la línea coincidente. ¿Cómo podría hacer esto?
search
logging
grep
command-line-interface
Mark Harrison
fuente
fuente
man grep | grep -C 1 context
:)man grep | grep -C 1 "\-C"
;)Respuestas:
Para BSD o GNU
grep
, puede usar-B num
para establecer cuántas líneas antes del partido y-A num
para el número de líneas después del partido.Si desea el mismo número de líneas antes y después puede usar
-C num
.Esto mostrará 3 líneas antes y 3 líneas después.
fuente
-A
y-B
funcionará, como lo hará-C n
(paran
líneas de contexto), o simplemente-n
(paran
líneas de contexto ... siempre que n sea 1 a 9).fuente
-n
formato y descubrí que solo funciona hasta9
. Porque15
devuelve 5 líneas-A
,-B
o-C
). Por lo general, el especificador de opción va seguido de un valor (-o a.out
para especificar el archivo de salida en GCC), pero también puede funcionar como un simple interruptor / indicador (-g
para habilitar la información de depuración en GCC). Sin embargo, los espacios entre las opciones son opcionales, por lo que para las opciones sin valor, es posible fusionarlas (-ABC
), lo que significa que-15
se interpreta-1 -5
(dos opciones separadas) y se-5
anula el-1
.ack funciona con argumentos similares a grep y acepta
-C
. Pero generalmente es mejor para buscar a través del código.fuente
grep
, no está seguro de usarlo para "publicitar"ack
(que es una gran herramienta, de hecho) es una buena idea ...Eso marcará "myfile" por "astring" y mostrará 5 líneas antes y después de cada partida.
fuente
Normalmente uso
Muchas de las herramientas como grep también tienen archivos man realmente geniales. Me encuentro refiriéndome mucho a la página de manual de grep porque hay mucho que puedes hacer con ella.
Muchas herramientas de GNU también tienen una página de información que puede tener información más útil además de la página de manual.
fuente
Usa grep
fuente
Busque "17655" en "/some/file.txt" que muestra el contexto de 10 líneas antes y después (usando Awk), salida precedida por un número de línea seguido de dos puntos. Use esto en Solaris cuando 'grep' no sea compatible con las opciones "- [ACB]".
fuente
ripgrep
Si se preocupan por el rendimiento, el uso
ripgrep
que tiene una sintaxis similar agrep
, por ejemplo,También hay parámetros como
-A
/--after-context
y-B
/--before-context
.La herramienta está construida sobre el motor regex de Rust, lo que lo hace muy eficiente en los datos grandes.
fuente
Aquí está la solución @Ygor en
awk
Nota: Reemplazar
a
yb
variables con número de líneas antes y después.Es especialmente útil para el sistema que no soporta de grep
-A
,-B
y-C
parámetros.fuente
-5
obtiene5
líneas arriba y abajo del partido 'thestring' es equivalente a-C 5
o-A 5 -B 5
.fuente
Grep tiene una opción llamada
Context Line Control
, puedes usarla--context
en eso, simplemente,o
Debería hacer el truco
fuente
Yo solía hacerlo de forma compacta
Eso es el equivalente de
fuente
Si busca código con frecuencia, AG el buscador de plata es mucho más eficiente (es decir, más rápido) que grep.
Muestra líneas de contexto utilizando la opción -C.
P.ej:
fuente