Uso de grep en archivos que coinciden con criterios específicos
El comando grep (impresión de expresión regular global) coincide y busca el patrón específico en las expresiones regulares. Este comando filtra y busca un patrón particular de caracteres y los muestra como resultado. Se considera uno de los comandos más útiles en sistemas tipo Unix/Linux para administradores de sistemas y desarrolladores.
Linux contiene varios tipos de comandos y utilidades para simplificar cada tarea. A diferencia de otros sistemas operativos, encontrar cualquier archivo en Linux es sencillo porque puedes usar el comando grep para buscar cualquier archivo.
Puede utilizar el comando grep para mostrar el nombre del archivo específico que contiene un patrón particular que está buscando. Sin embargo, hay algunas cosas que debes seguir al usar el comando grep en Linux:
Grep es un comando que distingue entre mayúsculas y minúsculas de forma predeterminada. Es por eso que debe usar la opción -i para que coincida con el patrón que no distingue entre mayúsculas y minúsculas.
Debe utilizar comillas en el comando grep para buscar un carácter con un significado especial para el shell.
-
El comando Grep muestra la línea completa que contiene el carácter específico. Por lo tanto, debe usar la opción -o solo para mostrar el nombre del archivo y el carácter buscado.
En esta breve guía, usaremos grep en archivos que coincidan con criterios específicos en Linux.
Uso de Grep en archivos que coinciden con criterios específicos en Linux
El comando grep está preinstalado en la mayoría de las distribuciones de Linux. Creemos algunos archivos de muestra en el directorio 'Documentos' y hagamos coincidir una cadena o una expresión regular en esos archivos.
~$: sudo tree Documents
Documents
|__ sample1
|__ sample2
|__ sample3
0 directories, 3 files
Ahora, buscaremos estos archivos de muestra a través de las diferentes opciones del comando grep en Linux.
Coincidencia de la búsqueda que distingue entre mayúsculas y minúsculas en archivos
Se incluye en la búsqueda que distingue entre mayúsculas y minúsculas si tiene que encontrar palabras y patrones exactos usando grep en archivos.
grep <pattern> <filename1> <filename2>.....
Aquí buscaremos la palabra "unix" entre todos los archivos del directorio Documentos.
Para esto, use el siguiente comando:
~$: grep unix sample1 sample2 sample3
sample1:unix
sample3:unix operating system
El comando anterior coincide con el patrón mencionado y muestra los archivos que contienen "unix".
Coincidencia de la búsqueda que no distingue entre mayúsculas y minúsculas en archivos
Puede buscar cualquier patrón sin sensibilidad usando la opción -i con el comando anterior:
grep -i <pattern> <filename1> <filename2>.....
Mostremos todos los resultados relacionados con 'unix', pero la terminal mostrará todos los archivos que contengan 'Unix' o 'unix'.
~$: grep -i "unix" sample1 sample2 sample3
sample1:unix
sample1:Unix
sample2:Unix
sample3:unix operating system
Buscar solo el patrón coincidente
El comando grep muestra el párrafo o línea completo de forma predeterminada. Puede mostrar solo el patrón en lugar de todo el pasaje o línea usando la opción -o con el comando grep.
grep -o "<pattern>" <filename>
Aquí buscaremos "Linux" mediante el comando grep y su opción -o.
~$: grep -o "Linux" sample1 sample3
sample1:Linux
Buscar nombres de archivos que coincidan con el patrón
Si desea buscar archivos que contengan un patrón o cadena específica, use el siguiente comando:
grep -l "<pattern>" <filename1> <filename2>.....
O,
grep -l "<pattern>" *
Por ejemplo, el siguiente comando mostrará el nombre del archivo en el directorio actual que contiene la palabra "linux":
~$: grep -l "linux" *
sample1
sample3
Combinando cualquier patrón
Utilice el siguiente comando grep para mostrar caracteres específicos que coincidan con cualquier palabra, patrón, etc., en los archivos.
grep "..<letter_pattern>" <filename>
Aquí, el siguiente comando muestra los patrones 'Linux' y 'Unix', que terminan con 'x'.
~$: grep "..x" sample1 sample3
sample2:Linux
sample2:Linux
sample2:Unix
sample3:linux
sample3:unix operating system.
Hacer coincidir el patrón de inversión
Sólo puede hacer coincidir líneas que no sean similares al patrón mencionado. En este caso, puede usar la opción -v con el comando grep de la siguiente manera:
grep -v "<pattern>" <filename>
Por ejemplo, buscaremos aquellos archivos que no contengan la palabra "Linux".
~$: grep -v "Linux" sample1 sample2 sample3
sample1:GNU operating system
sample1:gnu
sample1:Gnu
sample:unix
sample1:linux
sample1:unix
sample2:GNU
sample2:unix
sample3:linux
sample3:unix operating system.
sample3:gnu operating system.
Hacer coincidir el patrón que comienza con una palabra/cadena específica
El patrón de expresión regular '^' define el comienzo de un pasaje o línea. Usando el siguiente comando grep, puede mostrar las líneas que comienzan con un patrón o cadena específica.
grep "^<pattern>" <filename>
En el siguiente comando, usaremos el comando grep para buscar "gnu" en los archivos:
~$: grep "^gnu" sample2 sample3
sample3:gnu operating system.
Hacer coincidir el patrón que termina con una palabra/cadena específica
El patrón de expresión regular '$' define el final de un pasaje/línea. Usando esta expresión con el comando grep, puede hacer coincidir las líneas o pasajes que terminan con el patrón/palabra mencionado.
grep "<pattern>$" <filename>
Por ejemplo, buscaremos "sistema" en varios archivos:
~$: grep "system$" sample1 sample2 sample3
sample3:unix operating system.
sample3:gnu operating system.
Coincidencia recursiva de un patrón en el directorio
Si desea hacer coincidir un patrón dentro de todo el directorio en lugar de archivos específicos en el directorio, puede usar la opción -R con el comando grep de esta manera:
grep -R <pattern> <directory>
Ahora, ejecutaremos el comando grep de forma recursiva para encontrar archivos que contengan "GNU" en el directorio de Documentos:
~$: grep -R GNU Documents
Documents/sample2:GNU
Documents/sample1:GNU operating system
Consejo adicional: si desea hacer coincidir un patrón específico entre todos los archivos presentes en el directorio actual, puede hacerlo usando la opción -w con el comando grep de la siguiente manera:
grep -w <pattern> *
Coincidencia de archivos con extensiones específicas
Utilice el siguiente comando para buscar un patrón en archivos con una extensión específica incluida en un directorio
grep -R --include=*.<file_extention> '<pattern>' <directory>
En el siguiente ejemplo, el comando grep verifica el patrón mencionado solo en archivos con la extensión '.txt'.
~$: grep -R --include=*.txt 'Linux' Documents
Documents/sample1.txt:Linux is a kernel
Nota − También puede utilizar el comando anterior para hacer coincidir patrones en archivos con varias extensiones a la vez.
Conclusión
El comando grep es una excelente manera de filtrar archivos con patrones específicos a través de la terminal en Linux. En esta guía, hemos explicado las formas de hacer coincidir criterios específicos en archivos a través de varios ejemplos. Usar el comando grep es muy fácil y también puede verlo en algunos de los ejemplos anteriores. Por lo tanto, puede utilizar el comando grep para buscar cualquier patrón, línea, palabra, etc., en Linux con sólo unos pocos clics.