[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

grep sysadmin regex
Tramite questo comando, abbiamo detto al sistema di filtrare il file con la parola “invalid”. Come si nota, grep ci restituisce una stampa di tutte le corrispondenze che trova. Sono disponibili anche numerose opzioni, tra le principali ricordiamo:
• – 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 sysadmin fgrep regex

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

grep sysadmin regex linux
Come si nota abbiamo una serie di lettere e numeri, possiamo usare una regex insieme a Grep per visualizzare, ad esempio, solo le combinazioni dei numeri compresi nell’intervallo chiuso [0,9], composte da 2 cifre: grep -E ‘[0-9]{2}’ file.txt. In questo caso la regex utilizzata è ‘[0-9]{5}’ che risulta essere anche abbastanza intuitiva!

sharing-caring-1Seguiteci 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.

L’articolo [Guida] Grep: filtrare il contenuto dei file su Linux sembra essere il primo su Linux Freedom.


Source: [Guida] Grep: filtrare il contenuto dei file su Linux