martedì 17 agosto 2010

Utilizzo pratico di grep, uno dei comandi più utili quando andiamo a ricercare qualcosa,

Maria Susana Diaz | 11:57 |
Il comando grep è sicuramente uno dei più utili quando andiamo a ricercare qualcosa, sia essa contenuta in un file o in qualsiasi altro "oggetto" del nostro sistema operativo (ricordate che tutto è un file con il nostro sistema operativo).

Dalla pagina di manuale vediamo che la definizione che ne viene data è: grep - print lines matching a pattern; questo infatti è il suo funzionamento primario: prende un file in input, cerca le righe contenti un pattern dato ed infine le stampa a schermo.

Grep (General Regular Expression Print) è un comando dei sistemi Unix e Unix-like, e più in generale dei sistemi POSIX e GNU, che ricerca in uno o più file di testo le linee che corrispondono ad uno o più modelli specificati con espressioni regolari o stringhe letterali, e produce un elenco delle linee (o anche dei soli nomi di file) per cui è stata trovata corrispondenza. È un tipo di filtro.

Grep è comunemente utilizzato per ricercare le occorrenze di una o più parole in una serie di file, spesso in congiunzione con i comandi find e xargs tramite una pipeline software.

Grep può generalmente essere impiegato anche con file binari, ad esempio per ricercare la presenza di particolari etichette Exif all'interno di file contenenti immagini digitali. In particolare, la versione GNU di grep in questo caso elenca i nomi dei file contenenti la stringa o espressione regolare indicata (e non anche la porzione di testo corrispondente, come normalmente accade per i file di testo).

Ci sono però un'infinità di utilizzi diversi del comando, andiamone a vedere qualcuno con degli esempi commentati:

* grep -r 'hello' /home/user: cerca nella home dell'utente user tutte le occorrenze della stringa 'hello', l'opzione -r permette di controllare ricorsivamente tutte le cartelle sotto quella indicata;

* grep -r -l 'hello' /home/user: abbiamo aggiunto al comando precedente l'opzione -l che modifica l'output del comando. Infatti ora grep ci listerà non più le righe contenenti la stringa, ma i files che hanno almeno un'occorrenza della stringa dentro di essi;

[b:lstp]grep -r -l -v 'hello' /home/user: ancora un'altra opzione, questa volta si tratta di -v che sta per inVerse matching. Qui il comportamento di grep si inverte e seleziona non più i files che contengono un'occorrenza della stringa cercata, ma tutti gli altri;

* grep -r -w 'hello' /home/user: negli esempi precedenti veniva cercata un'occorrenza della stringa senza curarsi del fatto che essa fosse o meno una parola a sé stante; con l'opzione -w risolviamo questo inconveniente: il comando non andrà a considerare le righe con parole composte dalla stringa data, ma solo quelle che contengono effettivamente la parola isolata dalle altre. Oltre a questa opzione è possibile anche usare, direttamente nella stringa da cercare, < e >, che indicano rispettivamente l'inizio e la fine della parola. Ad esempio per cercare le parole che terminano con le lettere "ole" basterà digitare grep -r 'ole>' /home/user;

* ps ax | grep '[h]ttpd': è un comando molto utile che cerca tra i processi attivi (dati da ps ax) tutti i processi che contengano la stringa data, in questo caso httpd. La prima lettera è rinchiusa tra parentesi quadre perché si tratta di un'espressione regolare, nel caso non lo fosse, oltre a tutti i processi del web-server, grep troverebbe anche se stesso, disturbando la consultazione dei risultati;

* grep -r 'hello' /home/user | grep 'world': naturalmente usando bene gli outputs, si possono concatenare diversi grep per ottenere l'effetto voluto. Qui gli outputs saranno le righe contenenti sia 'hello' sia 'world'.

Altre informazioni importanti le trovate sulla pagina di manuale man grep.

Screenshots.










Se ti è piaciuto l'articolo, iscriviti al feed per tenerti sempre aggiornato sui nuovi contenuti del blog:



GOOGLE+

LINKEDIN

Xtreme Download Manager, XDMAN Ubuntu, audio, Linux opera mini, browser internet Chromium Linux, Chrome, browsers tux collection, mascote Linux LibreCAD, Grafica, Disegno vim, editor, linux, ubuntu Ardour, audio, Ubuntu Unity, deskyop, Gnome, Ubuntu grafica 3d, Linux, Blender