GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo hacer un buen uso del comando 'grep'

Los sistemas Linux y UNIX vienen con un comando de shell conocido como 'grep'. Esto simplemente busca un texto o patrón específico en un archivo o en un directorio completo. El uso más común es para buscar rápidamente en un archivo las ocurrencias de un patrón, que puede estar en texto sin formato o en forma de expresión regular.

Aquí, los patrones utilizados serán texto simple en lugar de expresiones regulares. Este artículo le mostrará cómo usar grep al buscar uno o más patrones en archivos de texto. Cómo eliminar líneas que contienen ciertos patrones de su búsqueda y cómo ejecutar múltiples comandos grep usando canalizaciones para un filtrado más avanzado.

​Resumen básico de 'grep'

Mire la salida del terminal para estos comandos:

/etc$ grep unix group
/etc$ grep -n unix group
/etc$ grep -w unix group
/etc$ grep -r -s unix . 

En esta captura de pantalla, uso grep para buscar la palabra "unix" en el archivo /etc/group. Devuelve todas las ocurrencias de unix_allsort (nombre de usuario para esta computadora) como resultado. El segundo comando hizo lo mismo, pero con el parámetro -n, muestra en qué línea se encontró el patrón en un archivo.

El tercer comando es ligeramente diferente con el parámetro '-w', que le dice a grep que coincida con una palabra completa en lugar de un simple fragmento de texto. Debido a que el archivo de grupo no tenía "unix" como palabra completa, no hubo salida.

El cuarto comando es diferente. El primer parámetro, '-r', le dice a grep que busque recursivamente en un directorio. El directorio, en este caso, es el actual (/etc), indicado por el '.'. El siguiente parámetro, '-s', le dice a grep que evite informar cualquier error, como errores de "Permiso denegado", a la salida, para no contaminar la salida con errores. Entonces, el cuarto comando grep enumera todas las apariciones de "unix" en todos los archivos en /etc y sus subdirectorios, donde cualquier error simplemente se ignora.

Patrones múltiples

​Para buscar más de un patrón, simplemente cree un archivo de texto que contenga una lista de patrones, uno por línea, para buscar en un archivo o directorio y use el parámetro -f para cargar el archivo que contiene los patrones.$ grep -f ~/grupos.txt /etc/grupo

Este archivo contiene estos patrones para buscar:

unix_allsort
vídeo
sudo

Todas las líneas que contengan al menos uno de estos patrones se mostrarán en la salida del terminal.

Redireccionamiento de salida

Recuerde que usar grep en un archivo grande, o incluso en varios archivos, puede generar muchos resultados. Entonces, algo bueno que puede hacer es canalizar la salida al comando 'menos' para que pueda desplazarse por la salida en su totalidad. $ grep -r -n -f filter.txt recursos/js | less ​O redirija su salida a un archivo de texto para verlo más tarde. $ grep -r -n -f filtro.txt recursos/js> ~/resultado.txt  

​Algo un poco más avanzado

Hay un truco que a veces uso con las tuberías para buscar patrones y filtrar también la salida no deseada. Canalizar la salida de grep para que se vea en "menos" fue un ejemplo.

Dos ejemplos usando el registro del kernel (/var/log/kern.log). Echa un vistazo a esta imagen:

Lo que he hecho es usar grep para enumerar todas las líneas que contienen la palabra completa "pci" (usé el parámetro -w para hacer coincidir solo palabras completas), canalicé la salida a otro comando grep para filtrar los patrones que no quería para ver en la salida.

Los patrones que estaba filtrando eran "ohci-pci" y "ehci-pci".

En esa imagen, primero filtré las líneas que contenían patrones que no quería, luego busqué en la salida lo que quería. También agregué otro patrón para filtrar, "pci=nocrs". Hay más características en grep de las que se cubren aquí, así que si planea usar grep regularmente, tómese el tiempo para investigar qué puede hacer y cómo mejorarlo. úsalo Además, consulte pdfgrep para buscar en archivos PDF.

Conclusión

Una herramienta como grep es extremadamente útil, por no decir indispensable, para buscar patrones específicos en una multitud de archivos de texto, scripts y especialmente registros con considerable facilidad. Puede buscar uno o varios patrones en un solo archivo o en varios archivos, o usarlos para filtrar las líneas de aquellos archivos que contienen esos patrones.

Puede incluso utilizar tuberías para tareas más complicadas. búsquedas y filtrado usando grep. Vale la pena dedicar tiempo a aprender más sobre este excelente comando, especialmente algunas de sus características avanzadas.


Linux
  1. Cómo usar el comando grep de Linux

  2. Cómo usar Telnet en Windows

  3. Cómo usar el comando Grep para buscar texto en archivos

  4. Cómo usar el comando Su en Linux

  5. Cómo hacer que el comando grep devuelva la línea coincidente completa

Cómo usar el comando grep en Debian 10

Cómo usar el comando sysctl en Linux

CÓMO UTILIZAR EL COMANDO DE COLA

Cómo usar el comando PS

Cómo usar el comando SUPERIOR

Cómo usar grep en Linux