Envíe los resultados de grep a un archivo de texto, necesita una salida más limpia

81

Cuando utilizo el comando Grep para encontrar una cadena de búsqueda en un conjunto de archivos, ¿cómo vuelco los resultados en un archivo de texto?

¿También hay un interruptor para el comando Grep que proporciona resultados más limpios para una mejor legibilidad, como un avance de línea entre cada entrada o una forma de justificar los nombres de archivo y los resultados de búsqueda?

Por ejemplo, un camino para cambiar ...

./file/path: first result
./another/file/path: second result
./a/third/file/path/here: third result

a

./file/path: first result

./another/file/path: second result

./a/third/file/path/here: third result
user2398188
fuente
14
Me encanta que estas preguntas súper útiles "no es una pregunta real" hayan terminado en los primeros resultados de búsqueda en Google años después.
Adrian Carr

Respuestas:

108
grep -n "YOUR SEARCH STRING" * > output-file

El -nimprimirá el número de línea y >redirigirá grep-results al archivo de salida.
Si desea "limpiar" los resultados, puede filtrarlos usando tubería, |por ejemplo:
grep -n "test" * | grep -v "mytest" > output-file coincidirá con todas las líneas que tienen la cadena "prueba" excepto las líneas que coinciden con la cadena "mytest" (ese es el interruptor -v), y redirigirá el resultado a un archivo de salida.
En esta publicación se pueden encontrar algunos buenos consejos sobre grep

Nir Alfasi
fuente
10
¿Grep escribe solo cuando termina o escribe línea por línea a medida que procesa el contenido? ¡Gracias!
Crista23
5
@alfasin: ¿el único '>' no va a sobrescribir los resultados en el archivo de salida? ¿No deberíamos usar doble '>>' para agregar los resultados al archivo?
GTodorov
3
@GTodorov sí, si desea agregar uso>>
Nir Alfasi
12
Para los futuros visitantes, la respuesta a la pregunta de @ Crista23 es que escribe cuando el grep ha terminado
HBeel
35

El shell realiza la redirección de la salida del programa.

grep ... > output.txt

grepno tiene ningún mecanismo para agregar líneas en blanco entre cada coincidencia, pero proporciona opciones como el contexto alrededor de la línea coincidente y la coloración de la coincidencia en sí. Consulte la grep(1)página de manual para obtener detalles, específicamente las opciones -Cy --color.

Ignacio Vázquez-Abrams
fuente