grep
Busca texto en archivos o en la salida de otro comando.
Sirve para encontrar las líneas que contienen un texto dentro de archivos, o para filtrar la salida de otro comando. Lo usas cuando quieres saber dónde aparece una palabra, un error o un mensaje sin tener que abrir archivo por archivo.
grep [opciones] PATRÓN [ARCHIVO...]Despiece
6 ejemplosBuscar una palabra en un archivo
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | grep | Comando | El comando para buscar texto. |
| 2 | error | Valor | El texto que quieres encontrar. |
| 3 | app.log | Argumento | El archivo donde vas a buscar. |
Muestra todas las líneas de app.log que contienen error, incluso dentro de otras palabras como errores.
Buscar sin importar mayúsculas
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | grep | Comando | El comando para buscar texto. |
| 2 | -i | Opción | Ignora la diferencia entre mayúsculas y minúsculas. |
| 3 | ERROR | Valor | El texto que buscas, sin importar cómo esté escrito en el archivo. |
| 4 | app.log | Argumento | El archivo donde vas a buscar. |
Encuentra las líneas con error, ERROR, Error y cualquier otra combinación.
Ver el número de línea
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | grep | Comando | El comando para buscar texto. |
| 2 | -n | Opción | Agrega el número de línea a cada resultado. |
| 3 | error | Valor | El texto que quieres encontrar. |
| 4 | app.log | Argumento | El archivo donde vas a buscar. |
Además de las líneas, muestra el número que tienen dentro del archivo.
Contar cuántas coinciden
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | grep | Comando | El comando para buscar texto. |
| 2 | -c | Opción | En vez de las líneas, imprime el total de coincidencias. |
| 3 | error | Valor | El texto que quieres contar. |
| 4 | app.log | Argumento | El archivo donde vas a buscar. |
Imprime un único número con cuántas líneas tienen la palabra error.
Buscar en una carpeta completa
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | grep | Comando | El comando para buscar texto. |
| 2 | -r | Opción | Recursivo: entra a la carpeta y a todas sus subcarpetas. |
| 3 | error | Valor | El texto que quieres encontrar. |
| 4 | /var/log/ | Argumento | La carpeta donde inicia la búsqueda. |
Recorre los archivos de /var/log y muestra cada línea con error, con el nombre del archivo al inicio. Sin sudo verás Permission denied en varios logs, y los .gz comprimidos no se leen así.
Filtrar la salida de otro comando
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | ps | Comando | Lista los procesos en ejecución. |
| 2 | aux | Opción | Muestra todos los procesos con columnas legibles. |
| 3 | | | Operador | Pipe: envía la salida de ps como entrada de grep. |
| 4 | grep | Comando | El comando que filtra esa salida. |
| 5 | nginx | Valor | El proceso que quieres encontrar en la lista. |
Muestra solo las líneas de ps que contienen nginx. También sale la línea del propio grep nginx.
Opciones
Las que sí vas a usar| Opción | Qué hace |
|---|---|
| -i--ignore-case | Ignora mayúsculas y minúsculas al buscar. |
| -r--recursive | Busca dentro de carpetas y subcarpetas. |
| -n--line-number | Muestra el número de línea junto al resultado. |
| -v--invert-match | Muestra las líneas que NO contienen el patrón. |
| -c--count | Solo imprime cuántas líneas coinciden, no las líneas en sí. |
| -w--word-regexp | Busca la palabra completa y no partes de otras palabras. |
| -E--extended-regexp | Usa expresiones regulares extendidas para patrones avanzados. |
| -l--files-with-matches | Solo lista los nombres de los archivos donde aparece el patrón. |
Fallas comunes
| Falla | Remedio |
|---|---|
| Buscar con mayúsculas cuando el texto está en minúsculas. | grep distingue mayúsculas. Agrega -i para ignorar la diferencia: grep -i error app.log. |
| Pasar una carpeta sin -r y no encontrar nada. | Sin -r, grep responde grep: /var/log/: Is a directory. Usa grep -r error /var/log/ para buscar en todo lo que hay dentro. |
| Ver aparecer el propio grep al filtrar procesos. | En ps aux | grep nginx, la línea del mismo grep aparece en el resultado. Quítala agregando | grep -v grep al final, o usa pgrep -a nginx. |
| Buscar una palabra que coincide dentro de otra. | Si buscas port y aparece important, usa -w para que grep busque la palabra completa. |
Preguntas frecuentes
- ¿Cómo busco una palabra en varios archivos de una carpeta?
- Usa grep -r palabra carpeta. La opción -r entra a las subcarpetas y te muestra en cuál archivo aparece cada coincidencia.
- ¿Qué significa grep -i?
- Es ignore case: busca sin distinguir mayúsculas y minúsculas. Sirve cuando no estás seguro de cómo está escrito el texto dentro del archivo.
- ¿Cuál es la diferencia entre grep error y grep -v error?
- grep error muestra las líneas que sí contienen la palabra. grep -v error muestra lo contrario: todas las líneas que NO la contienen. La -v invierte el resultado.
- ¿Cómo cuento cuántas veces aparece una palabra?
- grep -c error app.log cuenta las líneas que la contienen. Si una línea la tiene dos veces, cuenta una. Para contar cada aparición usa grep -o error app.log | wc -l.
- ¿Cómo busco una palabra completa para que no coincida dentro de otras?
- Usa -w. grep -w port busca solo la palabra port y no la encuentra dentro de otras palabras, como important o portable.