Inicio APP y Software ¿Cómo usar el comando grep en Linux/UNIX?

¿Cómo usar el comando grep en Linux/UNIX?

425
0

Introducción

Esta guía detalla los comandos grep más útiles para sistemas Linux/Unix.

Después de revisar todos los comandos y ejemplos, aprenderás cómo usar grep para buscar texto en archivos desde la terminal.

Prerrequisitos

  • Sistema operativo Linux o similar a UNIX
  • Acceso a una terminal/línea de comandos
  • Un usuario con permisos para acceder a los archivos y directorios deseados

Nota: Una línea no representa una línea de texto como se ve en la pantalla de la terminal. Una línea en un archivo de texto es una secuencia de caracteres hasta que se introduce un salto de línea. La salida de los comandos grep puede contener párrafos completos a menos que se refinen las opciones de búsqueda.

¿Qué es el comando grep?

Grep es un acrónimo que significa “Global Regular Expression Print” (Impresión global de expresiones regulares).

Grep es una herramienta de línea de comandos en Linux/Unix utilizada para buscar una cadena de caracteres en un archivo especificado. El patrón de búsqueda de texto se llama expresión regular. Cuando encuentra una coincidencia, imprime la línea con el resultado. El comando grep es útil al buscar en grandes archivos de registro.

Uso del comando grep

El comando grep consta de tres partes en su forma más básica. La primera parte comienza con grep, seguida del patrón que estás buscando. Después de la cadena viene el nombre del archivo por el cual grep busca.

La sintaxis más simple del comando grep se ve así:

grep [opciones] patrón [archivo(s)]

comando grep en linux
comando grep en linux

El comando puede contener muchas opciones, variaciones de patrones y nombres de archivos. Combina tantas opciones como sea necesario para obtener los resultados que necesitas. A continuación se muestran los comandos grep más comunes con ejemplos.

Nota: grep distingue entre mayúsculas y minúsculas. Asegúrate de usar la mayúscula y minúscula correcta al ejecutar los comandos grep.

Buscar en un archivo

Para imprimir cualquier línea de un archivo que contenga un patrón específico de caracteres, en nuestro caso “phoenix” en el archivo “sample2”, ejecuta el siguiente comando:

grep phoenix sample2

Grep mostrará cada línea donde haya una coincidencia con la palabra “phoenix”. Al ejecutar este comando, no obtienes coincidencias exactas. En su lugar, la terminal imprime las líneas con palabras que contienen la secuencia de caracteres que ingresaste. Aquí tienes un ejemplo:

Te recomendamos  ¿Cómo Ver Aplicaciones Eliminadas Recientemente en iPhone y Android?
comando grep en linux 2
comando grep en linux 2

Consejo: Si tu patrón de búsqueda incluye caracteres que no sean alfanuméricos, utiliza comillas. Esto incluye espacios en blanco o cualquier símbolo.

Buscar en varios archivos

Para buscar en varios archivos con el comando grep, inserta los nombres de archivo que deseas buscar, separados por un espacio.

En nuestro caso, el comando grep para encontrar la palabra “phoenix” en los archivos “sample”, “sample2” y “sample3” se vería así:

grep phoenix sample sample2 sample3

La terminal imprime el nombre de cada archivo que contiene las líneas coincidentes, así como las líneas que incluyen la cadena de caracteres requerida.

comando grep en linux 3
comando grep en linux 3

Puedes agregar tantos nombres de archivo como necesites. La terminal imprimirá una nueva línea con el nombre del archivo por cada coincidencia que encuentre en los archivos listados.

Buscar en todos los archivos de un directorio

Para buscar en todos los archivos del directorio actual, utiliza un asterisco en lugar de un nombre de archivo al final del comando grep.

En este ejemplo, utilizamos “nix” como criterio de búsqueda:

grep nix *

La salida muestra el nombre del archivo con “nix” y devuelve la línea completa.

Buscar solo palabras completas

Grep te permite encontrar e imprimir resultados solo para palabras completas. Para buscar la palabra “phoenix” en todos los archivos del directorio actual, agrega la opción “-w” al comando grep.

grep -w phoenix *

Esta opción solo imprime las líneas con coincidencias de palabras completas y los nombres de los archivos en los que las encontró:

comando grep en linux 4
comando grep en linux 4

Cuando se omite “-w”, grep muestra el patrón de búsqueda incluso si es una subcadena de otra palabra.

Si deseas buscar varias cadenas y patrones de palabras, consulta nuestro artículo sobre cómo buscar varias cadenas, patrones o palabras con grep.

Ignorar mayúsculas y minúsculas en las búsquedas de grep

Como los comandos grep distinguen entre mayúsculas y minúsculas, uno de los operadores más útiles para las búsquedas de grep es “-i”. En lugar de imprimir solo resultados en minúscula, la terminal muestra resultados en mayúscula y minúscula. La salida incluye líneas con entradas de mayúsculas y minúsculas mixtas.

Un ejemplo de este comando:

grep -i phoenix *

Si usamos el operador “-i” para buscar archivos en el directorio actual con la palabra “phoenix”, la salida se verá así:

Te recomendamos  ¿Cómo extraer archivos .tar.gz en Windows 10?
comando grep en linux 5
comando grep en linux 5

Buscar en subdirectorios

Para incluir todos los subdirectorios en una búsqueda, agrega el operador “-r” al comando grep.

grep -r phoenix *

comando grep en linux 6
comando grep en linux 6

Este comando muestra las coincidencias para todos los archivos en el directorio actual, subdirectorios y la ruta exacta con el nombre del archivo. En el ejemplo a continuación, también agregamos el operador “-w” para mostrar palabras completas, pero la forma de la salida es la misma.

Búsqueda inversa con grep

Puedes usar grep para imprimir todas las líneas que no coincidan con un patrón específico de caracteres. Para invertir la búsqueda, agrega “-v” a un comando grep.

Para excluir todas las líneas que contienen “phoenix”, ingresa:

grep -v phoenix sample

La terminal imprime todas las líneas que no contienen la palabra utilizada como criterio de búsqueda. Usa “-i” para ignorar mayúsculas y minúsculas y excluir completamente la palabra utilizada para esta búsqueda:

comando grep en linux 7
comando grep en linux 7

Mostrar líneas que coinciden exactamente con una cadena de búsqueda

El comando grep imprime líneas completas cuando encuentra una coincidencia en un archivo. Para imprimir solo aquellas líneas que coinciden completamente con la cadena de búsqueda, agrega la opción “-x”.

grep -x "phoenix number3" *

La salida muestra solo las líneas con la coincidencia exacta. Si hay otras palabras o caracteres en la misma línea, grep no los incluye en los resultados de búsqueda. No olvides utilizar comillas siempre que haya un espacio o un símbolo en el patrón de búsqueda.

Aquí tienes una comparación de los resultados sin y con el operador “-x” en nuestro comando grep:

comando grep en linux 8
comando grep en linux 8

Mostrar los nombres de los archivos que coinciden

A veces, solo necesitas ver los nombres de los archivos que contienen una palabra o cadena de caracteres y excluir las líneas reales. Para imprimir solo los nombres de archivo que coinciden con tu búsqueda, usa el operador “-l”:

grep -l phoenix *

comando grep en linux 9
comando grep en linux 9

La salida muestra los nombres exactos de los archivos que contienen “phoenix” en el directorio actual, pero no imprime las líneas con la palabra correspondiente:

Como recordatorio, utiliza el operador de búsqueda recursiva “-r” para incluir todos los subdirectorios en tu búsqueda.

Contar el número de coincidencias

Grep puede mostrar los nombres de los archivos y el recuento de líneas donde encuentra coincidencias para tu palabra.

Te recomendamos  ¿Cómo actualizar Node.js a la última versión {Linux, Windows y macOS}?

Utiliza el operador “-c” para contar el número de coincidencias:

grep -c phoenix *

comando grep en linux 10
comando grep en linux 10

Mostrar el número de líneas antes o después de una cadena de búsqueda

A veces necesitas más contenido en los resultados de búsqueda para decidir qué es más relevante.

Utiliza los siguientes operadores para agregar las líneas deseadas antes o después de una coincidencia, o ambas:

  • Usa “-A” y un número de líneas para mostrar después de una coincidencia: grep -A 3 phoenix sample – este comando muestra tres líneas después de la coincidencia.
  • Usa “-B” y un número de líneas para mostrar antes de una coincidencia: grep -B 2 phoenix sample – este comando muestra dos líneas antes de la coincidencia.
  • Usa “-C” y un número de líneas para mostrar antes y después de una coincidencia: grep -C 2 phoenix sample – este comando muestra dos líneas antes y después de la coincidencia.

Mostrar números de línea con las coincidencias de grep

Cuando grep imprime resultados con muchas coincidencias, es útil ver los números de línea. Agrega el operador “-n” a cualquier comando grep para mostrar los números de línea.

Buscaremos “Phoenix” en el directorio actual, mostraremos dos líneas antes y después de las coincidencias junto con sus números de línea:

grep -n -C 2 Phoenix sample

comando grep en linux 11
comando grep en linux 11

Limitar la salida de grep a un número fijo de líneas

Los archivos individuales, como los archivos de registro, pueden contener muchas coincidencias para los patrones de búsqueda de grep. Limita el número de líneas en la salida de grep agregando la opción “-m” y un número al comando.

grep -m2 Phoenix sample

En este caso, la terminal imprime las primeras dos coincidencias que encuentra en el archivo de ejemplo.

Si no especificas un archivo y buscas en todos los archivos de un directorio, la salida imprime los primeros dos resultados de cada archivo junto con el nombre del archivo que contiene las coincidencias.

Conclusión

Ahora sabes cómo usar el comando grep en Linux/Unix.

El comando grep es altamente flexible, con muchos operadores y opciones útiles. Al combinar comandos grep, puedes obtener resultados poderosos y encontrar el texto oculto en miles de archivos. Para comenzar, consulta nuestro artículo sobre expresiones regulares con grep.