Esistono 3 diverse forme del famoso comando grep. L'elenco seguente distingue anche tra i loro casi d'uso.
- fgrep :esegue una ricerca rapida di modelli semplici. Utilizzare questo comando per individuare rapidamente i pattern senza caratteri jolly, utili durante la ricerca di una parola normale.
- grep :ricerca con pattern utilizzando normali espressioni regolari.
- egrep :ricerche con pattern utilizzando espressioni regolari estese più potenti.
fgrep (fast grep) cerca in uno o più file le righe che corrispondono alla stringa di testo specificata. Lo stato di uscita è 0 se alcune righe corrispondono, 1 in caso contrario e 2 per errori. fgrep è più veloce delle normali ricerche grep ma meno flessibile:può trovare solo testo fisso, non espressioni regolari.
Il comando fgrep è proprio come grep, ma invece di accettare un'espressione regolare, accetta un elenco di stringhe fisse, separate da nuove righe. È lo stesso di grep -F. Ad esempio, se hai un file dizionario pieno di stringhe, una per riga:
# cat my_dictionary_file aardvark aback abandon ...
puoi cercare comodamente quelle stringhe in una serie di file di input:
# fgrep -f my_dictionary_file inputfile1 inputfile2
Normalmente, utilizzerai l'opzione -f minuscola per fare in modo che fgrep legga le stringhe fisse da un file. Puoi anche leggere le stringhe fisse sulla riga di comando usando le virgolette, ma è un po' più complicato. Per cercare le stringhe uno, due e tre in un file, devi digitare:
# fgrep 'one ### Note we are typing newline characters two three' myfile
fgrep è utile quando si cercano caratteri non alfanumerici come * e { perché sono presi alla lettera, non come caratteri di espressioni regolari.
Esempi di comando fgrep
1. Per interpretare PATTERN come un'espressione regolare estesa:
# fgrep --extended-regexp PATTERN # fgrep -E PATTERN
2. Per interpretare PATTERN come un elenco di stringhe fisse:
# fgrep -F PATTERN # fgrep --fixed-strings PATTERN
3. Per interpretare PATTERN come un'espressione regolare di base:
# fgrep -G PATTERN # fgrep --basic-regexp PATTERN
4. Per interpretare PATTERN come un'espressione regolare Perl:
# fgrep -P PATTERN # fgrep --perl-regexp PATTERN
5. Per utilizzare PATTERN come modello:
# fgrep -e PATTERN, # fgrep --regexp=PATTERN
6. Per ottenere modelli da FILE, uno per riga:
# fgrep -f FILE, --file=FILE
7. Per ignorare le distinzioni tra maiuscole e minuscole sia nel PATTERN che nei file di input:
# fgrep -i PATTERN # fgrep --ignore-case PATTERN
8. Per invertire il senso di corrispondenza, per selezionare le righe non corrispondenti:
# fgrep -v PATTERN # fgrep --invert-match PATTERN
9. Per selezionare solo quelle righe contenenti corrispondenze che formano parole intere:
# fgrep -w PATTERN # fgrep --word-regexp PATTERN
10. Per selezionare solo quelle corrispondenze che corrispondono esattamente all'intera riga:
# fgrep -x PATTERN # fgrep --line-regexp PATTERN
11. Per ignorare il caso:
# fgrep -y PATTERN
12. Per sopprimere l'uscita normale; stampa invece un conteggio delle righe corrispondenti:
# fgrep -c PATTERN # fgrep --count PATTERN
13. Per visualizzare a colori:
# fgrep --color PATTERN
14. Per sopprimere l'uscita normale; stampa invece il nome di ogni file di input, da out non sarà previsto:
# fgrep -L PATTERN # fgrep --files-without-match PATTERN
15. Per sopprimere l'uscita normale; stampa invece il nome di ogni file di input da cui sono stati stampati gli output:
# fgrep -l PATTERN # fgrep --files-with-matches PATTERN
16. Silenzio; non scrivere nulla sullo standard output Esci immediatamente con stato zero se viene trovata una corrispondenza:
# fgrep -q PATTERN # fgrep --quiet PATTERN # fgrep --silent PATTERN
17. Per interrompere la lettura di un file dopo NUM righe corrispondenti:
# fgrep -m NUM PATTERN # fgrep --max-count=NUM PATTERN
18. Per stampare solo le parti corrispondenti (non vuote) di una riga corrispondente:
# fgrep -o PATTERN # fgrep --only-matching PATTERN
19. Per eliminare i messaggi di errore relativi a file inesistenti o illeggibili:
# fgrep -s PATTERN # fgrep --no-messages PATTERN
20. Per stampare l'offset di byte in base 0 all'interno del file di input prima di ogni riga di output:
# fgrep -b PATTERN # fgrep --byte-offset PATTERN
21. Per stampare il nome del file per ogni corrispondenza:
# fgrep -H PATTERN # fgrep --with-filename PATTERN
22. Per eliminare il prefisso dei nomi di file sull'output:
# fgrep -h PATTERN # fgrep --no-filename PATTERN
23. Per visualizzare l'input effettivamente proveniente dallo standard input come input proveniente dal file LABEL:
# fgrep -cd PATTERN | fgrep --label=mysearch -H PATTERN
24. Per anteporre a ciascuna riga di output il numero di riga in base 1 all'interno del relativo file di input:
# fgrep -n PATTERN # fgrep --line-number PATTERN
25. Per assicurarsi che il primo carattere del contenuto effettivo della riga si trovi su un punto di tabulazione:
# fgrep -T PATTERN # fgrep --initial-tab PATTERN
26. Per segnalare gli offset dei byte in stile Unix:
# fgrep -u PATTERN # fgrep --unix-byte-offsets PATTERN
27. Per emettere uno zero byte invece del carattere che normalmente segue un nome di file:
# fgrep -Z PATTERN # fgrep --null PATTERN
28. Per stampare NUM righe di contesto finale dopo le righe corrispondenti:
# fgrep -A NUM PATTERN # fgrep --after-context=NUM PATTERN
29. Per stampare NUM righe di contesto iniziale prima delle righe corrispondenti:
# fgrep -B NUM PATTERN # fgrep --before-context=NUM PATTERN
30. Per stampare NUM righe di contesto di output:
# fgrep -C NUM PATTERN # fgrep --context=NUM PATTERN
31. Per elaborare un file binario come se fosse testo:
# fgrep -a PATTERN /tmp/bin # fgrep -text PATTERN /tmp/bin
32. Per assumere che il file sia di tipo TYPE:
# fgrep --binary-files=TYPE PATTERN
33. Se un file di input è un dispositivo, FIFO o socket, usa ACTION per elaborarlo:
# fgrep -D ACTION PATTERN # fgrep --devices=ACTION PATTERN
34. Se un file di input è una directory, utilizzare ACTION per elaborarlo:
# fgrep -d ACTION PATTERN # fgrep --directories=ACTION PATTERN
35. Per saltare i file il cui nome di base corrisponde a GLOB:
# fgrep --exclude=GLOB PATTERN
36. Per ignorare i file il cui nome di base corrisponde a uno qualsiasi dei glob di nomi file letti da FILE:
# fgrep --exclude-from=FILE PATTERN
37. Per escludere le directory che corrispondono al pattern DIR dalle ricerche ricorsive:
# fgrep --exclude-dir=DIR PATTERN
38. Per elaborare un file binario come se non contenesse dati corrispondenti:
# fgrep -I PATTERN
39. Per cercare solo i file il cui nome di base corrisponde a GLOB:
# fgrep --include=GLOB
40. Per leggere tutti i file in ogni directory, ricorsivamente:
# fgrep -r PATTERN # fgrep -R PATTERN
41. Per utilizzare il buffer di riga sull'output:
# fgrep --line-buffered PATTERN
42. Se possibile, usa la chiamata di sistema mmap per leggere l'input, invece della lettura predefinita:
# fgrep --mmap PATTERN
43. Per trattare i file come binari:
# fgrep -U /tmp/file PATTERN # fgrep --binary /tmp/file PATTERN
44. Per trattare l'input come un insieme di righe:
# fgrep -z PATTERN # fgrep --null-data PATTERN
45. Per visualizzare la guida:
# fgrep -h
46. Per stampare il numero di versione di grep:
# fgrep -V