[Guida] Grep: filtrare il contenuto dei file su Linux
Dopo aver esplorato insieme il contenuto del filesystem /proc, oggi parliamo di grep, uno dei comandi più potenti utilizzabili tramite terminale. Presente su tutti i sistemi Linux, ci permette di effettuare ricerche all’interno di file, applicando opportuni filtri. Faremo anche un piccolo accenno alle regex, che verranno trattate più approfonditamente in un’altra guida.
Grep ovvero general regular expression print
Oggi facciamo un nuovo piccolo passo in avanti nel mondo dell’amministrazione dei sistemi GNU/Linux, introducendo grep. Questo comando effettua una ricerca globale su un file tramite un sistema di filtri e ci mostra le corrispondenze. Lanciando da terminale il comando grep -h ci viene indicata la sintassi base di questo comando, ovvero grep [OPZIONE]… MODELLO [FILE]… Usarlo è quindi semplicissimo, ma cerchiamo di fare maggiore chiarezza attraverso un esempio. Utilizzerò il file auth.log, che possiamo trovare nel percorso /var/log/auth.log, poiché si presta benissimo all’occasione.
grep "invalid" /var/log/auth.log
• – i ignora le differenze tra le lettere maiuscole e minuscole;
• – m stampa le prime N corrispondenze;
• – r esegue la stampa in maniera ricorsiva anche nelle sottodirectory;
• – E permette di effettuare le ricerche tramite delle regex estese;
• – F permette di usare come modelli delle stringhe, da ricercare in maniera letterale. In questo caso risulta più immediato utilizzare direttamente il comando fgrep, come riportato nello screenshot.
Grep e le regex
Uno dei modi più efficaci di utilizzare Grep consiste nell’aumentare la complessità delle espressioni regolari utilizzate. Le regex sono un insieme di caratteri e operatori la cui combinazione inserita in grep permette di aumentare la complessità delle ricerche. Facciamo ora un esempio banale, rimandando al manuale (man 7 regex) per una spiegazione più dettagliata. Iniziamo con il generare un file di esempio e stampiamolo a video:
base64 /dev/urandom | head -c 1000 > file.txt cat file.txt
Seguiteci sul nostro canale Telegram, sulla nostra pagina Facebook e su Google News. Nel campo qui sotto è possibile commentare e creare spunti di discussione inerenti le tematiche trattate sul blog.