Grep è un potente comando UNIX che ti consente di cercare all'interno del contenuto del file su una varietà di parametri. È particolarmente utile durante la risoluzione dei problemi o il debug.
Il comando grep ha un numero enorme di opzioni e casi d'uso. Probabilmente non avrai mai bisogno o non li utilizzerai mai tutti. Tuttavia, finirai per utilizzare una manciata di comandi grep per la maggior parte del tempo.
Questo articolo elenca i comandi grep più comuni con esempi rapidi. Linux Handbook ha già un articolo dettagliato su grep, quindi non approfondirò qui. Mi limiterò a visualizzare le opzioni comuni e la loro spiegazione qui.
Va bene se hai già familiarità con il comando grep ma continui a dimenticare quale opzione fa cosa.
Opzione | Esempio di comando | Descrizione |
---|---|---|
io | file di modello grep -i | Ricerca senza distinzione tra maiuscole e minuscole |
A | grep -Un file di pattern | Mostra n righe dopo la corrispondenza |
B | grep -B n file di pattern | Mostra n righe prima della partita |
C | grep -C n file di pattern | Mostra n righe prima e dopo la partita |
v | file di modello grep -v | Mostra le righe che non corrispondono |
c | file di modello grep -c | Conta il numero di righe corrispondenti |
l | file di modello grep -l | Visualizza solo i nomi dei file |
con | file di modello grep -w | Abbina la parola esatta |
e | file grep -e regex | Abbina il pattern regex |
a | grep -un file di pattern | Cerca nei file binari |
r | grep -r pattern dir | Cerca ricorsivamente nella directory |
Ho incluso un cheatsheet in PDF che puoi scaricare, stampare e tenere sulla tua scrivania.
Scarica il cheat sheet di Grep
Esempi rapidi del comando Grep
Probabilmente sai già che per cercare un particolare testo o pattern in un file, devi usare grep in questo modo:
grep search_pattern filename
Vediamo alcuni casi d'uso comuni del comando grep.
Ricerca senza distinzione tra maiuscole e minuscole
Per impostazione predefinita, la ricerca con grep fa distinzione tra maiuscole e minuscole. Puoi ignorare la corrispondenza tra maiuscole e minuscole con -i
opzione:
grep -i search_pattern filename
In questo modo, grep restituirà righe che corrispondono a entrambi Holmes
e holmes
.
Mostra le righe prima e dopo le righe corrispondenti
Per impostazione predefinita, vengono visualizzate solo le righe corrispondenti. Ma quando stai risolvendo qualcosa, è utile vedere un paio di righe prima e/o dopo le righe corrispondenti.
Puoi usare il -A
per mostrare le righe dopo quelle corrispondenti. Ricorda, A sta per Dopo.
Il comando seguente mostrerà le linee corrispondenti insieme alle 5 linee dopo la corrispondenza.
grep -A 5 search_pattern filename
Allo stesso modo, puoi usare il -B
opzione per mostrare le righe prima di quelle corrispondenti. Ricorda, B sta per Prima.
Il comando seguente mostrerà 5 righe prima di quelle corrispondenti insieme alle righe corrispondenti.
grep -B 5 search_pattern filename
La mia preferita è l'opzione -C
perché mostra le righe che sono prima e dopo quelle corrispondenti. Ricorda, C qui sta per Cerchio.
Il comando seguente mostrerà 5 righe prima di quella corrispondente, la riga corrispondente e 5 righe dopo la riga corrispondente.
grep -C 5 search_pattern filename
Mostra le righe che non corrispondono
Puoi usare grep per visualizzare tutte le linee che NON corrispondono al modello dato. Questa 'corrispondenza inversa' viene utilizzata con -v
opzione:
grep -v search_pattern filename
Puoi combinare -i
e -v
opzioni.
Conta il numero di righe corrispondenti
Invece di mostrare le linee corrispondenti, puoi semplicemente ottenere quante linee corrispondono al modello con -c
opzione. Questa è la c minuscola.
grep -c search_pattern filename
Puoi combinare -c
e -v
opzione per ottenere il numero di righe che non corrispondono al modello specificato. Ovviamente puoi usare l'opzione senza distinzione tra maiuscole e minuscole -i
.
Mostra i numeri di riga delle righe corrispondenti
Per mostrare i numeri di riga delle righe corrispondenti, puoi utilizzare il -n
opzione.
grep -n search_pattern filename
Puoi fare lo stesso con la ricerca inversa.
Cerca in più file
Puoi fornire più di un file in grep in cui cercare.
grep search_pattern file1 file2
Potrebbe funzionare, ma un esempio più pratico è la ricerca in un particolare tipo di file. Ad esempio, se vuoi cercare una stringa solo negli script della shell (file che terminano con .sh), puoi usare:
grep search_pattern *.sh
Cerca tutti i file in una directory in modo ricorsivo
Puoi eseguire una ricerca ricorsiva con l'opzione grep -r
. Cercherà il modello dato in tutti i file nella directory corrente e nelle sue sottodirectory.
grep -r search_pattern directory_path
Visualizza solo i nomi dei file
Per impostazione predefinita, grep mostra le righe corrispondenti. Se hai eseguito la ricerca su più file e vuoi vedere solo quali file contengono la stringa, puoi usare il -l
opzione.
grep -l search_pattern files_pattern
Supponiamo di voler vedere quali file Markdown contengono la parola "manuale", puoi usare:
grep -l handbook *.md
Cerca solo la parola intera
Per impostazione predefinita, grep mostrerà tutte le righe che contengono la stringa data. Potresti non volerlo sempre. Se stai cercando la parola "fatto", verranno visualizzate anche le righe che contengono le parole "doner" o "abbandonato".
Per fare in modo che grep cerchi solo la parola intera, puoi usare l'opzione -w
:
grep -w search_string file
In questo modo, se cerchi la parola 'fatto', verranno visualizzate solo le righe che contengono 'fatto', non 'doner' o 'abbandonato'.
Cerca pattern regex
Puoi potenziare la tua ricerca usando il modello regex. C'è un'opzione dedicata -e
che consente di utilizzare il pattern regex e l'opzione -E
che consente di utilizzare modelli regex estesi.
grep -e regex_pattern file
Cerca questo o quel pattern
Puoi cercare più pattern nella stessa ricerca grep. Se vuoi vedere le righe che contengono uno schema o l'altro, puoi usare l'operatore OR |
. Tuttavia, devi sfuggire a questo carattere speciale nel modo seguente.
grep 'pattern1\|pattern' filename
È possibile utilizzare più modelli con l'operatore OR.
Non esiste un'opzione specifica per l'operatore AND. Puoi usare grep più volte con il reindirizzamento della pipe per questo.
Cerca nei file binari
Grep ignora i file binari per impostazione predefinita. Puoi farlo cercare nei file binari come se fosse un file di testo usando il -a
opzione.
grep -a pattern binary_file
Scarica il cheat sheet dei comandi Grep
Puoi aggiungere questa pagina ai segnalibri per fare rapidamente riferimento alle opzioni del comando grep e ai casi d'uso.
Puoi anche scaricare questo cheatsheet di grep in formato PDF, stamparlo e tenerlo sulla tua scrivania per avere una rapida occhiata senza perdere tempo.
Scarica Grep Command Cheatsheet GRATISDownload istantaneo dei comuni comandi grep con descrizione in formato PDF.grep-command-cheatsheet.pdf78 KB
Fammi sapere se hai altri casi d'uso comuni di grep che vorresti vedere in questa pagina.