Cercare stringhe di testo nei files con il comando grep
Grazie al comando GREP è possibile effettuare ricerche complesse sui files al fine di verificare che contengano o meno determinate stringhe o frasi o parole.
Facciamo un esempio: poniamo di voler sapere se all’interno del file “amici.txt” è presente la parola “federico”.
grep “federico” amici.txt
sulla base di questa istruzione grep restituirà tutte le linee del file indicato che contengono la parola cercata.
Ovviamente, visto così, potrebbe non sembrare un granchè… allora facciamo qualche altro esempio e poniamo di voler cercare la parola federico tra tutti i file presenti in una data directory e nelle sue eventuali sub-directory:
grep -r “federico” /home/utente/
Nell’esempio qui sopra abbiamo utilizzato grep con opzione ricorsiva (-r) per andare a scovare, non solo nella dir indicata ma anche in tutte le eventuali sub-directory, la presenza di file contenenti la parola indicata.
Ma la vera forza di grep sta nel suo utilizzo combinato con le regular expressions (espressioni regolari).
Non credo sia il caso di affrontare esaustivamente l’argomento (troppo lungo e complesso ai fini del nostro corso) tuttavia ritengo opportuno un cenno a due caratteri particolari molto importanti, ovvero “.” e “*”.
Il punto (.) può essere utilizzato per indicare un (nota bene: uno) carattere qualsiasi.
Facciamo un esempio:
grep -r “fede….” /home/utente/
Nell’esempio abbiamo messo quattro punti i quali indicano le lettere “rico” o “rica”, così cercheremo contemporaneamente federico e federica. Avremmo potuto ottimizzare il comando con un solo punto, ovvero:
grep -r “federic.” /home/utente/
Ma possiamo fare ancora di più. Poniamo di voler cercare tutte le parole che iniziano per fede all’interno di tutti i files:
grep -r “fede*” /home/utente/
Infatti il simbolo asterisco (*) indica non uno, bensì un arbitrario numero di lettere.
Ovviamente quelle viste sopra sono dabbero ben poca cosa rispetto alle vere capacità di grep, questi comandi di esempio sono di uso base.