Lezioni del modulo (2/2)
Pipeline e filtri (grep e |)
Una delle caratteristiche più potenti della riga di comando di Linux è la capacità di collegare comandi diversi in modo che l'output di uno diventi l'input di quello successivo. Questa tecnica si realizza tramite le pipeline ed è supportata dal comando di filtraggio grep.
Il filtro di testo: grep
Il comando grep (Global Regular Expression Print) cerca del testo specifico all'interno di uno o più file e stampa a schermo le righe corrispondenti:
grep "parola" [nome_file]Opzioni utili per grep
grep -i "errore" server.log: Effettua una ricerca case-insensitive (ignora la differenza tra maiuscole e minuscole, trovando sia "Errore" che "ERROR").grep -n "connessione" server.log: Mostra anche il numero di riga corrispondente nel file.grep -v "INFO" server.log: Inverte la ricerca, mostrando solo le righe che non contengono la parola specificata.
Incanalare i comandi: La Pipeline |
L'operatore pipeline è rappresentato dalla barra verticale |. Consente di inviare lo standard output del comando a sinistra direttamente allo standard input del comando a destra:
[comando1] | [comando2]Ad esempio, se un file di log è enorme e vuoi cercare una parola senza aprirlo tutto, puoi combinare cat e grep:
cat logs/server.log | grep ERRORQuesto comando legge l'intero file server.log con cat, ma invece di stamparlo a schermo lo passa a grep, che estrarrà e mostrerà solo le righe contenenti la parola "ERROR".
Esempi d'Uso ed Errori Comuni
Se esegui una ricerca per una parola usando lettere minuscole (es. "post") su un file che contiene solo lettere maiuscole (es. "POST"), grep non restituirà nulla:
grep "post" logs/access.log
# Output: (nessun risultato, la ricerca è case-sensitive di default)Per trovare la riga indipendentemente da come è scritta, usa il flag -i:
grep -i "post" logs/access.log
# Output:
# 127.0.0.1 - - [22/May/2026:10:10:00 +0000] "POST /login HTTP/1.1" 401 234Se il file specificato non esiste, grep restituirà un errore:
grep "ERROR" file_inesistente.log
# Output:
# grep: file_inesistente.log: No such file or directoryProva tu
Esercizio 1: Cerca errori nei log
Filtra il file 'logs/server.log' per estrarre e mostrare solo le righe che contengono la parola 'ERROR' (in maiuscolo).
Mostra suggerimento
Usa il comando grep seguito dalla parola da cercare e dal percorso del file.
Soluzione disponibile dopo 3 tentativi
Esercizio 2: Pipeline e filtri
Usa il comando cat per leggere il file 'logs/server.log' e incanala il suo output tramite una pipeline (|) verso il comando grep per filtrare e stampare solo le righe che contengono la parola 'WARNING'.
Mostra suggerimento
Collega cat logs/server.log a grep WARNING usando il carattere pipe '|'.
Soluzione disponibile dopo 3 tentativi
Esercizio 3: Ricerca case-insensitive
Cerca tutte le righe che contengono la parola 'post' (sia maiuscola che minuscola) all'interno del file 'logs/access.log' usando il flag opportuno di grep.
Mostra suggerimento
Usa grep con l'opzione -i per ignorare la differenza tra maiuscole e minuscole.
Soluzione disponibile dopo 3 tentativi