Grep
grep serve per trovare parole all'interno di files, puo' dirci non soo in che file si trovano, ma anche a che riga e cosa contengono le righe precedenti e quelle successive. Il comando grep e' uno dei piu' ostici da utilizzare perche' ha un sacco di opzioni da ricordare e le pagine info sono molto incasinate di collegamenti.
Per invocare grep bisogna utilizzare la seguente sintassi:
grep [opzioni] 'espressione' file_dove_cercare
Esempio
$ grep -r gatto *
In questo modo cerchera' in tutti i file della directory corrente e di tutte quelle contenute nella direcotry corrente la parola gatto.
Le opzioni sono tante, eccole descritte una per una:
- -c : invece del normale output scrive il numero di linee che contengono l'espressione. Esempio:
max@linux:~/Documents> grep -c mamma * 3d:0 latex:0 viva_la_mamma:3 addressbook.csv:1
- -e PATTERN : si utilizza un'espressione regolare per cercare i files
- -f FILE : il percorso viene preso dal FILE, line per linea
- -i : ignora la differenza tra lettere maiuscole e minuscole sia nell'input che nell'output
- -l : scrive solo il nome dei file che contengono la parola
- -n : per ogni file scrive a che linea compare la parola. Esempio:
max@linux:~/Documents/Latex/GuidaLin> grep -n casa * Guidalinux.tex:87:casa Guidalinux.tex:1293:le parole 'casa' e 'caso'.
- -o : Scrive solo la parte della linea che corrisponde all'espressione regolare. Esempio:
$ grep -o -e cas. * Guidalinux.tex:casa Guidalinux.tex:case Guidalinux.tex:caso
- -q : non scrive nulla ma esce con zero se viene trovato qualcosa. (anche un errore)
- -v :Inverte esattamente il significato delle cose da cercare, in mdo da avere come output le linee che non corrispondono all'espressione regolare.
- -x : tutta la linea deve corrispondere alla linea cercata
- -A NUMERO : Riporta un NUMERO di linee presenti nel file, oltre la linea trovata.
- -B NUMERO : Riporta un NUMERO di linee presenti nel file, precedenti la linea trovata la linea trovata.
- -C NUMERO : Riporta un NUMERO di linee presenti nel file, precedenti e seguenti la linea trovata la linea trovata.
- -color : utilizza i colori per evidenziare le parole nell'output
- -h : evita di scrivere il nome del file nell'output
- -label=ETICHETTA : considera l'input come se provenisse tutto dal file di nome ETICHETTA (utile negli script).
- -L : Stampa i file che non corrispondono
- -r : Cerca ricorsivamente in tutte le directori a partire da quella in cui si comincia a cercare
- -include=ESPRESSIONE : Verranno analizzati solo i file che rientrano nell'espressione
- -exclude=ESPRESSIONE : Non verranno analizzati i file che rientrano nell'espressione
- -m NUMERO : Blocca l'analisi di un file (per ogni file analizzato) dopo aver trovato un NUMERO di ricorrenze.
Esempi
Voglio sapere quante linee ha un file:
$ grep -C "" miofile 18
Voglio sapere in che linee e' contenuta la parola amore in tutti i file della cartella in cui mi trovo e tutte le sottodirectory:
$ grep -r -n "amore" * prova:3:Roma e' la citta' dell'amore poesia.txt:15:Amore mio sei tu che poesia.txt:25:Si e' forte il mio amore Documents/Italia.tex:7:Venezia e' la citta' dell'amore