Lo scopo di questo capitolo è presentare alcuni strumenti da linea di comando che possono tornare utili nell'uso quotidiano. Naturalmente potete evitare di leggerlo se intendete usare unicamente l'ambiente grafico, ma un rapido sguardo potrebbe farvi cambiare idea :-).
Questo capitolo non ha una vera e propria struttura, i comandi sono elencati così come capita, dal più comunemente usato al più oscuro. Ciascun comando sarà accompagnato da un esempio, ma la ricerca di altri usi interessanti per gli stessi comandi sarà lasciata a voi, come esercizio.
Va bene, il nome del programma non è molto intuitivo, e non lo è neanche il suo significato (grep sta per "General Regular Expression Parser"), ma il suo scopo è semplice: cercare in uno o più file un modello (ingl. pattern) di testo immesso come argomento. La sua sintassi è:
grep [opzioni] <modello> [uno o più file] |
-i: fa una ricerca case insensitive, cioè che non distingue fra maiuscole e minuscole;
-v: inverte la ricerca: mostra le righe che non contengono corrispondenze;
-n: mostra il numero di riga per ogni riga in cui viene trovata una corrispondenza;
-w: dice a grep che il modello deve corrispondere a una parola intera.
Ecco un esempio di come usarlo su un file di nome alex:
$ cat alex Ciao Ale Salve Alessandro Ci vediamo, Ale # Cerca la stringa "ciao", nessuna differenza tra maiuscole e minuscole $ grep -i ciao alex Ciao Ale # Cerca la stringa "Ale" come parola intera, e stampa # il numero di riga prima di ogni occorrenza $ grep -nw Ale alex 1:Ciao Ale 3:Ci vediamo, Ale # Adesso vogliamo tutte le righe che non cominciano con "C" $ grep -v "^C" alex Salve Alessandro $ |
Se volete usare grep in una pipe non dovete indicare il nome di un file, poiché come comportamento predefinito il comando preleva il suo ingresso dallo standard input. Allo stesso modo, come comportamento predefinito, il comando stampa il risultato sullo standard output, quindi potete indirizzare l'output di un grep verso un altro programma senza alcun problema. Ad esempio:
$ cat /usr/share/doc/HOWTO/Parallel-Processing-HOWTO | \ grep -n thread | less |