GNU/Linux: filtrare e cercare il testo nei file

Oggi parliamo di un comando utilissimo per filtrare il testo: grep. La sua funzione principale è proprio selezionare, da un testo o da un file, solo le righe che ci interessano. Qui lo vediamo nella sua forma più semplice, insieme alla redirezione dell’input.

Il file di prova

Nelle puntate precedenti, parlando di redirezione dell’output, abbiamo creato un file chiamato password.txt con una dozzina di password. Se non l’avete, lo potete generare così:

pwgen -nyc1 16 12 > password.txt

e guardare cosa contiene:

cat password.txt

Cercare una sequenza di caratteri

Supponiamo di voler sapere quali righe contengono la sequenza at. Il comando è grep seguito dalla stringa da cercare, e come input gli diamo il file con la redirezione dell’input, cioè il simbolo di minore:

grep at < password.txt

La redirezione dell’input prende il contenuto di un file e lo usa come input del comando che sta a sinistra. Nel nostro caso grep riceve il contenuto di password.txt e stampa solo le righe in cui compare la stringa. Il risultato, nel video, è una sola riga.

Un altro esperimento: quali sono le righe che contengono il numero 6?

grep 6 < password.txt

Ecco le righe che contengono il carattere 6.

Il file come argomento

La redirezione dell’input non è l’unico modo. Grep accetta anche il nome del file come argomento, ed è la forma che si usa di solito. Il risultato è identico:

grep at password.txt
grep 6 password.txt

Conclusione

Abbiamo visto come usare grep per filtrare il contenuto di un file di testo. Ha moltissime opzioni e può cercare in moltissimi modi, ed è molto utile soprattutto per filtrare file grandi. Nella prossima puntata vedremo come usare un altro sistema per unire i comandi, cioè dare in input a un comando l’output di un altro: la concatenazione con le pipe. Intanto aprite la Linux box e sperimentate.

Link e risorse

Sostieni il canale

PER SOSTENERE IL CANALE BASTANO UN LIKE E UN’ISCRIZIONE!

questi link sono affiliati Amazon, acquistando i libri che ti consiglio sostieni il canale!