En el mundo de Linux, buscar a través de archivos de texto para encontrar contenido específico es una tarea común, y una que se puede lograr de manera eficiente con el comando grep
. Abreviatura de “Global Regular Expression Print“, grep es una poderosa herramienta de línea de comandos que permite a los usuarios buscar en archivos utilizando patrones definidos por expresiones regulares.
Ya sea que estés buscando un error particular en un archivo de registro, o intentando localizar todas las instancias de un término específico en una gran base de código, grep es la herramienta principal para la búsqueda y manipulación de texto. Con la capacidad de coincidir con patrones complejos, filtrar resultados e incluso realizar operaciones en múltiples archivos, grep se erige como una utilidad vital para administradores de sistemas, programadores y analistas de datos por igual.
Sintaxis general para el comando grep:
grep [OPCIONES…] [PATRÓN] [ARCHIVO…]
- Buscar algo dentro de un archivo
- Buscar algo en múltiples archivos
- Encontrar una palabra exacta con grep
- Búsqueda sin distinción de mayúsculas y minúsculas con grep
- Contar y mostrar repetición de palabras con grep
- Búsqueda inversa con grep
- Mostrar línea coincidente y enumerar número de línea
- Listar nombres de archivos que contienen la cadena coincidente
- Buscar líneas que comienzan con un patrón
- Búsqueda de múltiples patrones con grep
Buscar algo dentro de un archivo
grep exp NombreArchivo.txt
grep es un comando poderoso que le permite buscar un conjunto específico de caracteres o palabras que existen en un archivo o múltiples archivos. El comando anterior busca “exp
” dentro de NombreArchivo.txt
y devuelve resultados cuando se encuentra.
Nota: grep es sensible a mayúsculas y minúsculas por defecto, y sin otros parámetros involucrados, grep devolvería resultados siempre que coincida con “exp“.
Ejemplo:
Suponiendo que NombreArchivo.txt
contiene el siguiente texto:
Esta es un archivo de example.
La palabra exp está aquí.
No hay coincidencia en esta línea.
Expresión es una buena palabra.
La experiencia enseña sabiduría.
El comando grep exp NombreArchivo.txt
daría como resultado la siguiente salida:
Esta es un archivo de example.
La palabra exp está aquí.
Expresión es una buena palabra.
La experiencia enseña sabiduría.
Esta salida muestra todas las líneas en NombreArchivo.txt
que contienen la subcadena “exp
“.
Nota: Si hay una palabra como “eaaaaxaaaap” que contiene la subcadena “exp“, entonces la línea que contiene esa palabra se mostrará en la salida
Buscar algo en múltiples archivos
grep todo nombre1.txt nombre2.txt nombre3.txt
Este comando expande la búsqueda a múltiples nombres de archivo especificados.
Ejemplo:
El comando grep todo nombre1.txt nombre2.txt nombre3.txt
usa grep para buscar la cadena “todo” dentro de los archivos nombre1.txt
, nombre2.txt
y nombre3.txt
. Si se encuentra la cadena, imprimirá las líneas que contengan esa cadena junto con los nombres de los archivos.
nombre1.txt:Todos estamos juntos en esto.
nombre2.txt:Todo lo mejor para tu futuro.
nombre3.txt:Todo en estas líneas coinciden.
nombre3.txt:Todo está bien.
Encontrar una palabra exacta con grep
grep -w ejemplo Ejemplo.txt
Con el parámetro -w
, grep se vuelve más preciso en su búsqueda y solo devuelve verdadero si la palabra exacta coincide. En el comando anterior, grep busca “ejemplo
” en Ejemplo.txt
.
Cualquiera de los siguientes devolvería falso (a diferencia de los anteriores comandos):
Ejemplo
ejemplos
Búsqueda sin distinción de mayúsculas y minúsculas con grep
grep -i adictosalinux ArchivoEjemplo.txt
Con el parámetro -i
, grep buscará sin distinción entre mayúsculas y minúsculas y devolverá verdadero siempre que la entrada coincida, independientemente de si son caracteres en mayúscula o minúscula.
El comando anterior busca la palabra “adictosalinux
” en ArchivoEjemplo.txt
, y devolverá el resultado si se encuentra.
Todas las siguientes devolverán verdadero con la existencia de -i
:
AdictosaLinux
AdictosALinux
Contar y mostrar repetición de palabras con grep
grep -c adictosalinux ArchivoEjemplo.txt
Con el parámetro -c
, grep primero buscará si una palabra específica existe, y luego contará cuántas veces se repite. El comando anterior busca “adictosalinux” y devuelve el número de veces que existió en ArchivoEjemplo.txt
.
Aquí hay una salida de muestra hipotética para el comando dado:
5
Esto significaría que la palabra “adictosalinux
” se encontró en 5 líneas dentro del archivo ArchivoEjemplo.txt
. Si la palabra “adictosalinux
” no se encuentra en el archivo en absoluto, el comando mostraría:
0
Búsqueda inversa con grep
grep -v lorem untexto.txt
El parámetro -v
excluye toda la línea que coincide con el patrón de entrada y muestra el resto que no lo contiene. El comando anterior busca “lorem” en untexto.txt. Cualquier línea sin “lorem” devolverá verdadero.
Ejemplo:
Imagina que untexto.txt
contiene las siguientes líneas:
lorem ipsum dolor sit amet
consectetur adipiscing elit
lorem sed do eiusmod tempor
Cuando ejecutes el comando grep -v lorem untexto.txt
, la salida sería:
consectetur adipiscing elit
Esta línea es la única que no contiene la palabra “lorem
“.
- Para buscar una sola palabra, no necesitas comillas:
grep -v lorem untexto.txt
- Para buscar una frase o varias palabras, necesitas comillas:
grep -v "lorem ipsum" untexto.txt
Mostrar línea coincidente y enumerar número de línea
grep -n ipsum textorandom.txt
El parámetro -n
devuelve el contenido con el recuento de líneas. Cuando se incluye una palabra de búsqueda, devuelve la línea completa (donde existe la palabra) con su recuento de línea. El comando anterior busca “ipsum” en textorandom.txt
, y su salida muestra en qué línea está “ipsum
“.
Ejemplo:
Suponiendo que textorandom.txt
tiene el siguiente contenido:
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Otra línea sin el término de búsqueda.
Otra línea más.
ipsum ipsum ipsum
Aquí también hay un ipsum.
El comando grep -n ipsum textorandom.txt
produciría:
1:Lorem ipsum dolor sit amet, consectetur adipiscing elit.
4:ipsum ipsum ipsum
5:Aquí también hay un ipsum.
Aquí, los números antes de los dos puntos representan los números de línea en el archivo donde se encontró la cadena “ipsum
“.
Listar nombres de archivos que contienen la cadena coincidente
grep -l dolor *txt
Con el parámetro -l
, solo los archivos .txt
que contengan la palabra “dolor
” devolverán verdadero. Se imprimirán los nombres de los archivos en lugar de la línea completa.
Ejemplo:
Suponiendo que tienes tres archivos en el directorio, a saber, archivo1.txt
, archivo2.txt
y archivo3.txt
, y “dolor
” se encuentra en archivo1.txt
y archivo3.txt
, la salida se vería así:
archivo1.txt
archivo3.txt
Buscar líneas que comienzan con un patrón
grep ^Ejemplo ArchivoTexto.txt
El carácter ^
delante de un patrón de búsqueda sugiere que grep
solo debe buscar palabras que comiencen con el patrón de búsqueda y nada más. El comando anterior buscará en ArchivoTexto.txt
y devolverá todas las líneas que comiencen con “Ejemplo
“.
Ejemplo:
Suponiendo que ArchivoTexto.txt
contiene el siguiente texto:
Ejemplo linea 1
Esta es otra línea
Ejemplo linea 2
Otra línea más sin la palabra clave
Ejemplo linea 3
La salida del comando sería:
Ejemplo linea 1
Ejemplo linea 2
Ejemplo linea 3
Búsqueda de múltiples patrones con grep
grep -e lorem -e amet ArchivoEjemplo.txt
El parámetro -e
se puede usar varias veces en el mismo comando; cada uno emparejado con un patrón de búsqueda, te permite ser más específico al buscar algo en un archivo. El comando anterior busca las palabras “lorem
” y “amet
” en ArchivoEjemplo.txt
, y devuelve si es verdadero/encontrado.
Ejemplo:
Supongamos que ArchivoEjemplo.txt
contiene las siguientes líneas:
lorem ipsum dolor sit amet
consectetur adipiscing elit
amet, consectetur adipiscing
sed do eiusmod tempor
lorem incididunt ut
Ejecutar el comando grep -e lorem -e amet ArchivoEjemplo.txt
daría como salida:
lorem ipsum dolor sit amet
amet, consectetur adipiscing
lorem incididunt ut
Más comandos de Linux:
Operaciones de Directorios | rmdir · cd · pwd · exa · ls |
Operaciones de Archivos | cat · cp · dd · less · touch · ln · rename · more · head |
Operaciones de Sistema de Archivos | chown · mkfs · locate |
Redes | ping · curl · wget · iptables · mtr |
Búsqueda y Procesamiento de Texto | find · grep · sed · whatis · ripgrep · fd · tldr |
Información y Gestión del Sistema | env · history · top · who · htop · glances · lsof |
Gestión de Usuarios y Sesiones | screen · su · sudo · open |
¿Qué te parece?
Es bueno conocer tu opinión. Deja un comentario.