Grep attraverso esempi
Nell’ambiente *nix (Unix, linux) grep è un comando usato per la ricerca di testo all’interno dei file. Si tratta di uno strumento da usare nella linea di comando, molto ben conosciuto dagli amministratori di sistema che spesso ne fanno un uso quotidiano nella loro attività.
Grazie alle varie opzioni disponibili è possibile ottenere risultati notevoli. Qui riporto una serie di esempi che possono rivelarsi utili e suggerire possibili utilizzi.
Ricerca del testo usando grep
Ricerca del testo “pippo” nel file /etc/passwd file. Verranno mostrate come risultato tutte le linee che contengono il testo cercato.
$ grep “pippo” /etc/passwd
Un uso alternativo è tramite pipe, passando il testo da cercare. Il risultato è uguale.
$ cat /etc/passwd | grep “pippo”
Ricerca senza distinzione maiuscole/minuscole
L’uso dell’opzione -i indica a grep di ignorare il fatto che il testo sia in maiuscolo o minuscolo. Quindi la ricerca verrà effettuata indiffirentemente per ogni combinazione, come ad esempio Pippo, piPPO, PippO, ecc.
$ grep -i “pippo” /etc/passwd
Ricerca di più termini
Per effettuare la ricerca di più termini contemporaneamente è sufficiente indicarli separati da pipe.
$ grep “pippo|pluto|paperino” /etc/passwd
Ricerca in più file
Per effettuare la ricerca in più di un file è sufficiente specificare i file da utilizzare.
$ grep “pippo” file1 file2 file3
Ricerca in tutti i file di una directory
L’uso dell’asterisco permette di effettuare la ricerca in tutti i file contenuti nella directory attiva
$ grep “pippo” *
… o limitando la ricerca solo a certi tipi di file
$ grep “pippo” *.txt
Ricerca ricorsiva
Per effettuare la ricerca anche nelle sottodirectory si utilizza l’opzione -r
$ grep -r “pippo” /home/carlo/
Conteggio del numero di linee che rispondono alla ricerca
L’opzione -c permette di ottenere il numero di linee che contengono almeno una volta il termine cercato (non è il numero di occorrenze, ma il numero di linee).
$ grep -c “pippo” file
Output del contenuto con il numero di linea
L’opzione -n riporta il risultato della ricerca con il numero di linea.
$ grep -n “pippo” file
Risultato inverso della ricerca
L’opzione -v causa il risultato contrario: vengono quindi riportate le linee che NON corrispondono alla ricerca.
$ grep -v “pippo” file
Indicazione del solo nome del file
Quando una ricerca viene fatta su molti file, è possibile ottenere come risposta solo il nome dei file che danno risposta positiva alla ricerca.
$ grep -rl “pippo” /home/carlo/
Ricerca ricorsiva limitata solo a certi tipi di file
Nel caso della ricerca ricorsiva è possibile restringere l’operazione solo a determinati file che rispondono ad uno specifico modello.
$ grep -R –include=”*.html” “pippo” /var/www/html/
comando grep linux