Saltar al contenido principal
eLearner.app
Módulo 3 · Lección 2 de 27/11 en el curso~15 min
Lecciones del módulo (2/2)

Tuberías y filtros (grep y |)

Una de las características más potentes de la línea de comandos de Linux es la capacidad de conectar diferentes comandos para que la salida de uno se convierta en la entrada del siguiente. Esta técnica se realiza mediante pipelines (tuberías) y es compatible con el comando de filtrado grep.


El filtro de texto: grep

El comando grep (Global Regular Expression Print) busca un texto específico dentro de uno o más archivos e imprime en pantalla las líneas correspondientes:

Bash
grep "parola" [nome_file]

Opciones útiles para grep

  • grep -i "errore" server.log: Realiza una búsqueda case-insensitive (ignora la diferencia entre mayúsculas y minúsculas, encontrando tanto "Errore" como "ERROR").
  • grep -n "connessione" server.log: Muestra también el número de línea correspondiente en el archivo.
  • grep -v "INFO" server.log: Invierte la búsqueda, mostrando solo las líneas que no contienen la palabra especificada.

Canalizar comandos: La Pipeline |

El operador pipeline está representado por la barra vertical |. Permite enviar la salida estándar del comando de la izquierda directamente a la entrada estándar del comando de la derecha:

Bash
[comando1] | [comando2]

Por ejemplo, si un archivo de registro (log) es enorme y quieres buscar una palabra sin abrirlo por completo, puedes combinar cat y grep:

Bash
cat logs/server.log | grep ERROR

Este comando lee todo el archivo server.log con cat, pero en lugar de mostrarlo en pantalla lo pasa a grep, que extraerá y mostrará solo las líneas que contengan la palabra "ERROR".


Ejemplos de uso y errores comunes

Si realizas una búsqueda de una palabra usando letras minúsculas (ej. "post") en un archivo que solo contiene letras mayúsculas (ej. "POST"), grep no devolverá nada:

Bash
grep "post" logs/access.log
# Output: (ningún resultado, la búsqueda es case-sensitive por defecto)

Para encontrar la línea independientemente de cómo esté escrita, usa la opción -i:

Bash
grep -i "post" logs/access.log
# Output:
# 127.0.0.1 - - [22/May/2026:10:10:00 +0000] "POST /login HTTP/1.1" 401 234

Si el archivo especificado no existe, grep devolverá un error:

Bash
grep "ERROR" file_inesistente.log
# Output:
# grep: file_inesistente.log: No such file or directory

Pruébalo tú

Ejercicio 1: Cerca errori nei log

Ejercicio#linux.m3.l2.e1
Intentos: 0Cargando...

Filtra el archivo 'logs/server.log' para extraer y mostrar solo las líneas que contienen la palabra 'ERROR' (en mayúsculas).

Cargando editor...
Mostrar pista

Usa el comando grep seguido de la palabra a buscar y la ruta del archivo.

Solución disponible después de 3 intentos

Ejercicio 2: Pipeline e filtri

Ejercicio#linux.m3.l2.e2
Intentos: 0Cargando...

Usa el comando cat para leer el archivo 'logs/server.log' y canaliza su salida a través de una tubería (|) hacia el comando grep para filtrar e imprimir solo las líneas que contienen la palabra 'WARNING'.

Cargando editor...
Mostrar pista

Conecta cat logs/server.log a grep WARNING usando el carácter de tubería '|'.

Solución disponible después de 3 intentos

Ejercicio 3: Ricerca case-insensitive

Ejercicio#linux.m3.l2.e3
Intentos: 0Cargando...

Busca todas las líneas que contengan la palabra 'post' (tanto en mayúsculas como en minúsculas) dentro del archivo 'logs/access.log' usando la opción adecuada de grep.

Cargando editor...
Mostrar pista

Usa grep con la opción -i para ignorar la diferencia entre mayúsculas y minúsculas.

Solución disponible después de 3 intentos