Comandos LinuxExplicados en español
/
Ficha31 / 104
Categoría
Texto
Ejemplos
6
Ver también
find · cat · ps

grep

global regular expression print (buscar texto con patrones)

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.

Sintaxisgrep [opciones] PATRÓN [ARCHIVO...]
§ 1

Despiece

6 ejemplos
Buscar una palabra en un archivo

Buscar una palabra en un archivo

3 piezas
Lámina01 / 06
Comandogrep error app.log
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1grepComandoEl comando para buscar texto.
2errorValorEl texto que quieres encontrar.
3app.logArgumentoEl archivo donde vas a buscar.
Resultado

Muestra todas las líneas de app.log que contienen error, incluso dentro de otras palabras como errores.

Buscar sin importar mayúsculas

4 piezas
Lámina02 / 06
Comandogrep -i ERROR app.log
Piezas4
Escala1:1
N.ºPiezaTipoQué hace
1grepComandoEl comando para buscar texto.
2-iOpciónIgnora la diferencia entre mayúsculas y minúsculas.
3ERRORValorEl texto que buscas, sin importar cómo esté escrito en el archivo.
4app.logArgumentoEl archivo donde vas a buscar.
Resultado

Encuentra las líneas con error, ERROR, Error y cualquier otra combinación.

Ver el número de línea

4 piezas
Lámina03 / 06
Comandogrep -n error app.log
Piezas4
Escala1:1
N.ºPiezaTipoQué hace
1grepComandoEl comando para buscar texto.
2-nOpciónAgrega el número de línea a cada resultado.
3errorValorEl texto que quieres encontrar.
4app.logArgumentoEl archivo donde vas a buscar.
Resultado

Además de las líneas, muestra el número que tienen dentro del archivo.

Contar cuántas coinciden

4 piezas
Lámina04 / 06
Comandogrep -c error app.log
Piezas4
Escala1:1
N.ºPiezaTipoQué hace
1grepComandoEl comando para buscar texto.
2-cOpciónEn vez de las líneas, imprime el total de coincidencias.
3errorValorEl texto que quieres contar.
4app.logArgumentoEl archivo donde vas a buscar.
Resultado

Imprime un único número con cuántas líneas tienen la palabra error.

Buscar en una carpeta completa

4 piezas
Lámina05 / 06
Comandogrep -r error /var/log/
Piezas4
Escala1:1
N.ºPiezaTipoQué hace
1grepComandoEl comando para buscar texto.
2-rOpciónRecursivo: entra a la carpeta y a todas sus subcarpetas.
3errorValorEl texto que quieres encontrar.
4/var/log/ArgumentoLa carpeta donde inicia la búsqueda.
Resultado

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

5 piezas
Lámina06 / 06
Comandops aux | grep nginx
Piezas5
Escala1:1
N.ºPiezaTipoQué hace
1psComandoLista los procesos en ejecución.
2auxOpciónMuestra todos los procesos con columnas legibles.
3|OperadorPipe: envía la salida de ps como entrada de grep.
4grepComandoEl comando que filtra esa salida.
5nginxValorEl proceso que quieres encontrar en la lista.
Resultado

Muestra solo las líneas de ps que contienen nginx. También sale la línea del propio grep nginx.

§ 2

Opciones

Las que sí vas a usar
OpciónQué hace
-i--ignore-caseIgnora mayúsculas y minúsculas al buscar.
-r--recursiveBusca dentro de carpetas y subcarpetas.
-n--line-numberMuestra el número de línea junto al resultado.
-v--invert-matchMuestra las líneas que NO contienen el patrón.
-c--countSolo imprime cuántas líneas coinciden, no las líneas en sí.
-w--word-regexpBusca la palabra completa y no partes de otras palabras.
-E--extended-regexpUsa expresiones regulares extendidas para patrones avanzados.
-l--files-with-matchesSolo lista los nombres de los archivos donde aparece el patrón.
§ 3

Fallas comunes

FallaRemedio
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.
§ 4

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

Ver también