Come usare grep su Linux
Il comando grep è uno strumento basilare e versatile nel mondo Linux, pensato per filtrare e trovare testo all’interno di file o flussi generati da altri comandi. Il suo nome è l’acronimo di Global Regular Expression Print; in pratica, permette di cercare “globalmente” corrispondenze e “stampare” le linee che le contengono.

Per usare grep si parte semplicemente con:
1 2 3 |
grep "parola" test.txt |
Questo comando restituisce tutte le righe in cui compare “parola” in test.txt. È possibile richiamare grep anche senza specificare un file: in questo caso, il testo viene ricevuto dallo standard input. Per esempio, filtrando l’output di un altro programma:
1 2 3 |
ps aux | grep firefox |
grep supporta le espressioni regolari, ovvero modelli più sofisticati rispetto alla semplice stringa: si possono usare metacaratteri come ^
per l’inizio della riga, $
per la fine o simboli di contesto all’interno di parole. Questo lo rende particolarmente potente quando serve cercare pattern complessi come indirizzi IP, nomi di file o log con formati precisi.
Tra le opzioni più frequenti ci sono -i
per ignorare maiuscole e minuscole, -n
per mostrare i numeri di riga, -l
per elencare solo i nomi dei file in cui compare la parola, e -v
per invertire la ricerca, mostrando dunque le righe che non corrispondono. Molti preferiscono anche -r
o -R
per effettuare ricerche ricorsive all’interno di intere directory. Si può così scandagliare in profondità l’albero delle cartelle senza ricorrere a comandi aggiuntivi.
Un aspetto importante riguarda l’uso delle espressioni regolari con caratteri che la shell potrebbe interpretare, come le parentesi oppure il punto. Per evitare sorprese è prudente circondare il pattern con virgolette singole:
1 2 3 |
grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' access.log |
In questo caso -E
abilita le espressioni regolari estese, utili per identificare righe che rappresentano formati noti, come gli indirizzi IP. Grep è anche ottimo in combinazione con find o xargs per automatizzare ricerche su grandi raccolte di file. Un mix molto comune è:
1 2 3 |
find . -type f -name "*.log" -exec grep "error" {} + |
In alternativa, con xargs
:
1 2 3 |
find . -type f -print0 | xargs -0 grep "error" |
Grep è quindi una colonna portante nel bagaglio di chi lavora su Linux: consente indagini rapide su log, configurazioni o semplici documenti, integrandosi con pipeline e script grazie all’uso delle espressioni regolari.