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.
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.