10 ejemplos prácticos del comando Grep de Linux

El comando grep proporciona acceso a la utilidad grep, una poderosa herramienta de procesamiento de archivos que se utiliza para encontrar patrones en archivos de texto. Tiene muchos casos prácticos de uso y es sin duda uno de los comandos de Linux más utilizados. Esta guía ilustra algunos comandos grep de Linux simples pero útiles que tienen usos en el mundo real.

Archivo de ejemplo para demostración

Hemos creado un archivo de referencia para ayudar a los lectores a comprender grep de manera más eficaz. Puede crear una copia de este archivo emitiendo el siguiente comando de shell en su terminal.

 cat <<END >> test-file
This is a simple text file that contains
multiple strings as well as some telephone numbers
(555) 555-1234 (567) 666-2345
and email plus web addresses
[email protected]
https://google.com
ftp://mywebserver.com
END

1. Buscar texto en archivos

Para buscar un patrón de texto en un archivo, simplemente ejecute grep seguido del nombre del patrón. Además, especifique el nombre del archivo que contiene el texto.

 grep "email" test-file

Este comando mostrará la línea en nuestro archivo de prueba que contiene la palabra correo electrónico . También puede buscar el mismo texto en varios archivos usando grep.

 grep "example" /usr/share/dict/american-english /usr/share/dict/british-english

El comando anterior muestra todas las instancias de la palabra ejemplo en los archivos de diccionario inglés americano e inglés británico .

2. Encuentra palabras de coincidencia exacta

El comando grep de Linux ilustrado en el ejemplo anterior también enumera líneas con coincidencias parciales. Use el comando que se proporciona a continuación si solo necesita las ocurrencias exactas de una palabra.

 grep -w "string" test-file

La opción -w o –word-regexp de grep limita la salida solo a coincidencias exactas. Grep consta de algunos indicadores adicionales que también se pueden usar con el comando predeterminado.

Relacionado: ¿Cómo obtuvo su nombre Grep? La historia detrás de la creación de Grep

3. Ignorar distinciones entre mayúsculas y minúsculas

De forma predeterminada, grep busca patrones distinguiendo entre mayúsculas y minúsculas. Sin embargo, es posible que desee desactivarlo si no sabe en qué caso es el patrón de antemano.

 grep -i "this" test-file

Utilice la opción -i o –ignore-case para desactivar la distinción entre mayúsculas y minúsculas.

4. Cuente el número de patrones

La bandera -c significa recuento . Muestra el número de coincidencias que se encontraron para un patrón en particular. Los administradores pueden usar esto para recuperar información específica sobre el sistema.

Puede canalizar el comando ps con grep para contar los procesos que pertenecen al usuario actual.

 ps -ef | grep -c $USER

El siguiente comando muestra la cantidad de archivos MP3 presentes en un directorio.

 ls ~/Music | grep -c .mp3

5. Mostrar números de línea que contengan coincidencias

Es posible que desee encontrar los números de línea que contienen una determinada coincidencia. Use la opción -n o –line-number de grep para lograr esto.

 cat /etc/passwd | grep -n rubaiat

Esta opción es particularmente útil para depurar códigos fuente y solucionar problemas de archivos de registro. Para mostrar todos los números de las líneas en ~ / .vimrc que se utilizan para configurar el editor de texto Vim :

 grep -n "set" ~/.vimrc

6. Busque nombres de archivo mediante extensiones

Para obtener una lista de todos los archivos MP3 presentes en el directorio ~ / Music :

 ls ~/Music/ | grep ".mp3"

Puede reemplazar .mp3 con cualquier otra extensión para localizar archivos específicos. El siguiente comando enumera todos los archivos php presentes en el directorio de trabajo actual.

 ls | grep ".php"

7. Busque patrones en archivos comprimidos

El comando grep de Linux también puede encontrar patrones dentro de archivos comprimidos. Sin embargo, necesitará usar el comando zgrep para hacer esto. Primero, cree un archivo comprimido de nuestro archivo de prueba escribiendo:

 gzip test-file

Ahora, puede buscar texto u otros patrones dentro del archivo resultante.

 zgrep email test-file.gz

8. Busque direcciones de correo electrónico

Los administradores también pueden enumerar las direcciones de correo electrónico de los archivos de texto mediante el comando grep de Linux. El siguiente ejemplo hace esto buscando un patrón de expresión regular.

 grep '^[a-zA-Z0-9]+@[a-zA-Z0-9]+.[az]{2,}' test-file

Puede encontrar expresiones regulares para realizar trabajos similares o puede crearlas usted mismo si sabe cómo funcionan.

9. Encuentra números de teléfono usando Grep

Puede utilizar expresiones regulares grep para filtrar números de teléfono de un archivo de texto. Tenga en cuenta que tendrá que modificar el patrón para que coincida con el tipo de números de teléfono que necesita.

 grep '(([0-9]{3})|[0-9]{3})[ -]?[0-9]{3}[ -]?[0-9]{4}' test-file

El comando antes mencionado filtra los números de teléfono estadounidenses de diez dígitos.

10. Busque URL de archivos de origen

Podemos aprovechar el poder de grep para enumerar las URL que se encuentran en archivos de texto. El siguiente comando imprime todas las URL presentes en el archivo de prueba .

 grep -E "^(http|https|ftp):[/]{2}([a-zA-Z0-9-.]+.[a-zA-Z]{2,4})" test-file

De nuevo estamos usando la opción -E para expresiones regulares extendidas. También puede usar el comando egrep para evitar agregar esto.

 egrep "^(http|https|ftp):[/]{2}([a-zA-Z0-9-.]+.[a-zA-Z]{2,4})" test-file

Dominar el comando Grep de Linux

Hemos presentado varios ejemplos útiles del comando grep de Linux para abordar problemas del mundo real. Aunque estos ejemplos ilustran el poder de grep para el procesamiento de texto, necesitará dominar las expresiones regulares si quiere ser súper productivo con grep.

A veces, los usuarios de Linux se encuentran con determinadas situaciones en las que no pueden recordar las distintas opciones relacionadas con un comando. Con suerte, el sistema operativo Linux le proporciona formas de obtener ayuda de línea de comandos para casi todas las utilidades del sistema.