Comando grep de Linux: cómo utilizarlo y ejemplos útiles

El comando grep en Linux sirve para buscar líneas que contienen un patrón específico dentro de uno o varios archivos. Es una herramienta esencial para filtrar resultados en segundos, especialmente en archivos grandes como registros o configuraciones del sistema.

En este tutorial aprenderás cómo usar grep paso a paso: desde su sintaxis básica y las opciones más comunes hasta búsquedas recursivas, expresiones regulares y combinaciones con otros comandos. 

También verás ejemplos prácticos para aplicar estas funciones al administrar tu servidor o analizar archivos en tu VPS.

Sintaxis del comando grep

La sintaxis básica de grep es la siguiente:

grep [options] pattern [FILE] 

A continuación se explica el significado de cada elemento:

  • grep: nombre de la utilidad.
  • opciones: argumentos que modifican el comportamiento del comando grep.
  • patrón: la palabra clave que deseas buscar.
  • archivo: el elemento cuyo contenido deseas buscar. 

En la siguiente sección, explicaremos las opciones más utilizadas y ejemplos de su uso en la vida real. Puedes consultar esta guía de utilidades en su interfaz de línea de comandos introduciendo:

grep --help

Recuerda que debes tener el privilegio de “lectura” del archivo que deseas comprobar con grep. Lee nuestro tutorial sobre cómo cambiar los permisos en Linux.

¿Para qué se utiliza el comando grep?

El comando grep se utiliza generalmente para buscar líneas que contengan una palabra clave específica en un archivo. También es útil para filtrar la salida de otra utilidad, imprimiendo solo aquellas con un patrón concreto. Puedes hacerlo canalizando el comando a grep.

Uso del comando grep de Linux

En esta sección, analizaremos el uso habitual de la utilidad grep. Si utilizas un VPS, ejecuta el comando a través de un cliente SSH como PuTTY. Para ordenadores de sobremesa, abre la terminal de Linux pulsando Ctrl + Alt + T.

Búsqueda básica

El uso más básico de grep es filtrar archivos de texto, mostrando las líneas que contienen una palabra concreta. Para ello, ejecuta este comando sin ninguna opción, con esta sintaxis:

grep keyword file

También puedes enumerar varios nombres de archivo de la siguiente manera:

grep pattern file1 file2 file3

Si deseas utilizar una frase como cadena de búsqueda, encierra el patrón entre comillas. Por ejemplo, este comando encontrará las líneas que contengan Linux distro en el archivo de ejemplo hostinger.txt:

grep "Linux distro" hostinger.txt 
Ejemplo de uso de grep "Linux distro" hostinger.txt 

Ten en cuenta que la sintaxis solo funciona si el archivo de entrada se encuentra en tu directorio actual. Si se encuentra en otra ubicación, especifica la ruta completa de la siguiente manera:

grep pattern /path/to/the/file.txt

¡Importante! Dado que los comandos de Linux como grep distinguen entre mayúsculas y minúsculas, preste atención al uso de mayúsculas en el patrón de búsqueda y el nombre del archivo.

Búsqueda recursiva

Puedes buscar de forma recursiva en todos los archivos y subdirectorios de una carpeta utilizando la opción -r. Esta es la sintaxis:

grep -r keyword path/to/a/folder

Por ejemplo, tenemos un directorio tutorial/content/linux que contiene dos carpetas llamadas commands y utilities. Para buscar la palabra VPS en todos los archivos de estas carpetas, simplemente ejecuta grep en la ruta principal:

grep -r VPS tutorial/content/linux

El comando grep mostrará las líneas coincidentes de cualquier archivo y carpeta dentro del directorio tutorial/content/linux.

Uso del comando grep -r VPS tutorial/content/linux

También puedes usar la opción -r para buscar el mismo patrón en varios archivos o directorios al mismo tiempo. grep analizará todas las carpetas dentro de la ruta indicada y mostrará cada coincidencia con el nombre del archivo correspondiente.

Imprimir entradas alrededor de la línea coincidente

Grep te permite mostrar las líneas anteriores y posteriores a la entrada coincidente para proporcionarte más contexto. Para ello, añade estas opciones seguidas del número de líneas adyacentes que deseas imprimir:

  • A: imprime la línea posterior a la entrada coincidente.
  • B: muestra la línea anterior a la entrada coincidente.
  • C: muestra las líneas tanto después como antes de la entrada.

Por ejemplo, ejecuta la siguiente sintaxis de grep para imprimir una entrada después de las líneas coincidentes:

grep -A1 pattern file
Uso del comando grep -A1 pattern file

Búsqueda sin distinción entre mayúsculas y minúsculas

De forma predeterminada, grep tratará los patrones con diferentes mayúsculas y minúsculas como cadenas diferentes. Por ejemplo, no puedes buscar Grep y GREP utilizando la palabra clave grep. Puedes desactivar este comportamiento añadiendo la opción -i:

grep -i keyword file

Si queremos buscar la palabra vps e ignorar las distinciones entre mayúsculas y minúsculas, ejecuta el siguiente comando:

grep -i vps hostinger.txt
Uso del comando grep -i vps hostinger.txt

Búsqueda invertida

Añade la opción -v a tu comando grep con esta sintaxis para habilitar la búsqueda inversa, imprimiendo las líneas que no coinciden:

grep -v keyword file

Por ejemplo, este comando muestra solo aquellas líneas que no contienen la palabra VPS del archivo hostinger.txt:

grep -v VPS hostinger.txt
Uso del comando grep -v VPS hostinger.txt

¿Cómo puedo buscar líneas que no coincidan con un patrón?

Para imprimir líneas que no coincidan con un patrón, añada la opción -v a su comando grep. Esto habilitará la función de búsqueda inversa, mostrando todas las entradas de un archivo que no contengan la palabra clave.

Mostrar números de línea

Si estás trabajando con archivos grandes, como un registro, los datos de salida pueden ser muy largos. Esto dificulta la comprobación de la ubicación del patrón. Para simplificar la tarea, puedes mostrar los números de línea con la opción -n de la siguiente manera:

grep -n keyword file

Por ejemplo, este comando imprimirá las líneas del archivo auth.log que contienen la palabra “usuario desconocido” y sus números:

grep -n "unknown user" auth.log

La línea que comienza con el número uno significa que es la primera entrada del archivo auth.log y así sucesivamente.

Uso del comando grep -n "unknown user" auth.log

Entre las opciones más utilizadas de grep se encuentran -i para ignorar mayúsculas y minúsculas, -r para realizar búsquedas recursivas, -v para excluir coincidencias y -n para mostrar el número de línea. Estas opciones te permitirán adaptar fácilmente el comando a distintos casos de uso. 

Consejo profesional

Puedes combinar opciones de grep para refinar la búsqueda. Por ejemplo, ejecuta grep -nv pattern file para mostrar el número de línea de las entradas que no contienen el patrón especificado.

Uso de grep con expresiones regulares

Las expresiones regulares o regex, son cadenas de caracteres que definen un patrón de búsqueda. Son útiles para encontrar una consulta muy específica sin tener que enumerar las palabras clave individualmente. A continuación se muestran varios símbolos regex y sus significados:

  • .: coincide con cualquier carácter único.
  • *: representa cero o más caracteres precedentes.
  • +: significa uno o más de los caracteres anteriores.
  • ?: indica cero o uno de los caracteres anteriores.
  • ^: indica el inicio de un patrón regex.
  • $: representa el final de un patrón de expresión regular.
  • (): agrupa patrones.

Estas expresiones regulares se comportan de manera diferente dependiendo de si se utiliza la expresión regular extendida (ERE) con la opción -E o la expresión regular básica predeterminada (BRE).

Por ejemplo, si deseas buscar patrones como abc y acc, ejecuta el siguiente comando. El símbolo del punto (.) coincidirá con cualquier carácter:

grep -E 'a.c' file

Los símbolos ^ y $ te permiten buscar líneas que comienzan o terminan con un patrón específico. Considera este ejemplo de comando grep:

grep -E '^pattern' file

El comando anterior coincidirá con las líneas que comienzan con patrón, como patrón es una cadena de texto. Por su parte, el siguiente comando buscará entradas que terminan con patrón:

grep -E 'pattern$' file

También puedes combinar varios símbolos de expresiones regulares para refinar tu búsqueda y obtener un resultado más específico. Por ejemplo, este comando buscará líneas que contengan cualquier palabra que comience con H y termine con R:

grep '^H.*R$' 1.txt
Uso del comando grep '^H.*R$' 1.txt

Buscar varios patrones

Puedes buscar varias palabras clave con un solo comando grep. La forma más sencilla de hacerlo es enumerando las palabras clave entre comillas () separadas por barras invertidas (\) y barras verticales (|). Esta es la sintaxis:

grep 'pattern1\|pattern2\|pattern3' file

En este comando, grep utiliza BRE, ya que no estamos añadiendo ninguna opción. Para evitar que interprete la barra vertical como el patrón consultado, la evitamos utilizando la barra invertida.

Uso del comando grep 'pattern1\|pattern2\|pattern3' file

También puedes buscar varios patrones sin barra invertida añadiendo la opción -E para habilitar la función especial de la barra vertical, de la siguiente manera:

grep -E 'pattern1|pattern2|pattern3' file

En lugar de la opción -E, puedes hacerlo utilizando el comando egrep:

egrep 'pattern1|pattern2|pattern3' file

Si desea especificar los patrones por separado, utiliza la opción -e para cada consulta de búsqueda. Esta es la sintaxis del comando:

grep -e pattern1 -e pattern2 -e pattern3 file

Todas estas variaciones del comando grep producen el mismo resultado. Por lo tanto, elige una según tus preferencias.

Contar coincidencias

Varias tareas de administración del sistema pueden requerir que compruebes cuántas líneas de un archivo tienen un patrón coincidente. Por ejemplo, esto es útil para contar los intentos de inicio de sesión desde una dirección IP específica en un archivo de registro.

Para comprobar cuántas líneas contienen un patrón, utiliza la opción -c o –count de la siguiente manera:

grep -c pattern file

Sin embargo, la opción -c cuenta las líneas coincidentes, no las apariciones del patrón. Si deseas comprobarlo, utiliza la opción -o y pásala al comando wc de la siguiente manera:

grep -o pattern file | wc -l

En lugar de mostrar la línea completa, la opción -o solo imprime las apariciones del patrón, que el comando wc cuenta. Hablaremos del uso de una tubería (|) en la sección posterior.

Uso del comando grep -o pattern file | wc -l

Ten en cuenta que este comando también cuenta otras variantes de la palabra clave. Por ejemplo, si utilizas el patrón connect, grep buscará palabras como reconnect, connected, connecting y disconnected.

Si deseas contar la palabra que coincide exactamente, añade los límites de palabra al principio y al final de la palabra clave. A continuación se muestra un ejemplo:

grep -o '\bpattern\b' file 

Combinar grep con otros comandos

Además de archivos y directorios, puedes filtrar datos de entrada de otro comando utilizando grep. Para ello, combínalos utilizando una barra vertical (|) de la siguiente manera:

command | grep pattern

En el fragmento, la barra vertical redirige la salida del primer comando a grep, filtrando el resultado en función de la palabra clave. A continuación se muestra un ejemplo de uso real:

ls | grep '\.txt$'

El comando ls muestra el contenido del directorio actual. A continuación, el comando grep filtra el resultado y muestra los archivos TXT que hay dentro de la carpeta. Aquí hay otro ejemplo:

ps aux | grep "process_name" 

El comando ps aux muestra todos los procesos que se están ejecutando en el sistema. A continuación, la utilidad grep busca uno concreto de la lista basándose en su nombre.

Dependiendo de la tarea, puedes combinar grep con otras herramientas. Los usuarios del alojamiento VPS de Hostinger que no estén seguros de qué utilidades utilizar pueden recurrir a nuestro asistente con IA, Kodee, para que les explique y genere el comando completo.

Por ejemplo, pregúntale a Kodee: “Quiero enumerar todos los servicios de mi VPS Ubuntu y utilizar la utilidad grep para filtrar el resultado, imprimiendo solo los relacionados con NGINX. Genera el comando completo”.

A continuación, escribirá el comando adecuado para tu sistema y sus necesidades de la siguiente manera:

Panel de control VPS de hPanel

También puedes pedirle a Kodee que realice la tarea directamente. Escribe un comando como “Enumera todos los servicios de mi VPS Ubuntu y filtra los resultados para mostrar solo los relacionados con Docker”.

Redirigir la salida

Es posible que los administradores del sistema necesiten guardar los resultados del comando grep para su posterior procesamiento o archivo. Una forma sencilla de hacerlo es redirigir la salida a un archivo de texto utilizando el símbolo mayor que (>). Esta es la sintaxis:

grep pattern file > target_file.txt

Si el archivo de destino no existe, el comando grep lo creará automáticamente en tu directorio de trabajo actual.

Para comprobar si grep guarda la salida correctamente, imprime el contenido del archivo de destino utilizando el comando cat de la siguiente manera:

cat target_file.txt

Cómo sacarle el máximo partido al comando grep

Dominar el comando grep te da una ventaja real en la administración de sistemas Linux. Más allá de las búsquedas básicas, puedes combinarlo con otras utilidades como awk, sed o sort para analizar datos, depurar errores y automatizar tareas.

Por ejemplo, usar grep dentro de una tubería (|) te permitirá filtrar resultados de otros comandos y mantener tus registros limpios y organizados.

Si trabajas con un servidor o VPS, poner en práctica estos comandos te ayudará a localizar información rápidamente en archivos de configuración, detectar fallos de servicios o comprobar conexiones activas sin depender de herramientas externas. Cuanto más uses grep, más notarás su utilidad para optimizar el tiempo de gestión del sistema.

Para seguir aprendiendo, revisa nuestra guía completa sobre comandos de Linux y descubre cómo cada herramienta puede complementar a grep en tus tareas diarias.

También puedes explorar cómo cambiar permisos de archivos o redirigir salidas para llevar tus búsquedas a otro nivel.

Author
El autor

Gustavo B.

Gustavo es un apasionado por la creación de sitios web. Se enfoca en la aplicación de estrategias SEO en Hostinger para España y Latinoamérica, así como la creación de contenidos de alto nivel. Cuando no está aplicando nuevos trucos en WordPress lo puedes encontrar tocando la guitarra, viajando o tomando un curso online.