GNU/Linux >> Linux Esercitazione >  >> Ubuntu

15 esempi di utilizzo del comando Grep in Linux

Grep, o Global Regular Expression Print, è un comando Linux estremamente utile per trovare modelli corrispondenti. Può esaminare file e directory e leggere anche l'input dai comandi. Cerca con espressioni regolari o regolari e stampa le righe da un file che corrisponde al modello specificato.

In questo post, vedremo come utilizzare il comando Grep in Linux. I comandi discussi qui sono stati testati su Ubuntu 20.04. Gli stessi comandi Grep funzionano anche per Debian, Mint, Fedora e CentOS.

Installazione del comando grep

La maggior parte delle distribuzioni Linux, incluso Ubuntu 20.04 LTS, viene fornita con grep installato. Nel caso in cui sul tuo sistema non sia installato Grep, puoi installarlo utilizzando il comando seguente in Terminale:

$ Sudo apt-get install grep

Sintassi del comando Grep

La sintassi di base del comando Grep è la seguente:

$ grep [options] PATTERN [FILE...]

Utilizzo del comando Grep

Trovare una parola in un file

Con Grep puoi cercare qualsiasi parola in un file specifico. La sintassi sarebbe:

$ grep <word> <filename>

Ad esempio, il comando seguente cercherà la parola "Donuts" nel file "Donuts.txt".

$ grep Donuts Donuts.txt

Trovare una parola in più file

Puoi anche cercare una parola specifica in più file.

$ grep <word> <filename1> < filename2>

Ad esempio, il comando seguente cercherà la parola "Donuts" sia in "Donuts.txt" che in "cakes.txt".

$ grep Donuts Donuts.txt cakes.txt

Ignora maiuscole/minuscole

Grep esegue ricerche con distinzione tra maiuscole e minuscole per impostazione predefinita, ciò significa che tratta "ciambella" e "ciambelle" in modo diverso. Se eseguiamo nuovamente il comando precedente con "ciambelle", questa volta non vedrai alcun output.

$ grep donuts Donuts.txt

Per ignorare il caso, dovrai aggiungere "-i ” al tuo comando in questo modo:

$ grep –i <word> <filename>

Trovare un file per estensione in una directory

Puoi anche trovare un file in una directory specifica in base alla sua estensione. Utilizzare la seguente sintassi per farlo:

$ ls ~/<directory> | grep .<file type>

Ad esempio, per trovare tutti i file ".jpeg" nella cartella "Download", il comando sarebbe:

$ ls ~/Downloads | grep .jpeg

Righe di stampa che non corrispondono a un motivo

Con Grep, puoi anche stampare le linee che non corrispondono al tuo modello aggiungendo "-v ” al tuo comando. Utilizzare la seguente sintassi per farlo:

$ grep -v <word> <filename>

Ad esempio, il comando seguente stamperà tutte le righe tranne quella che contiene la parola "Donuts".

Stampa solo la parola corrispondente

Per impostazione predefinita, grep stampa l'intera riga che contiene il motivo. Per stampare solo la parola corrispondente, aggiungi "-o ” al tuo comando.

$ grep -o <word> <filename>

Ad esempio, il comando seguente stamperà solo la parola "Donuts" invece di stampare l'intera riga dal file "Donuts.txt".

Numero riga di stampa del modello e della riga corrispondenti

Per impostazione predefinita, grep stampa l'intera riga che contiene il motivo. Per stampare sia il numero di riga che la riga che contiene la parola corrispondente, aggiungi "-n ” al tuo comando.

$ grep -n <word> <filename>

Ad esempio, il comando seguente stamperà sia il numero di riga che la riga che contiene la parola "Donuts".

$ grep -n Donuts Donuts.txt

Stampa nomi di file che corrispondono a un modello

Per stampare tutti i file nella directory corrente che corrispondono al modello, utilizzare la seguente sintassi:

$ grep -l “<word>” *

Ad esempio, il seguente comando stamperà tutti i file che contengono la parola “Ciao”:

$ grep -l “Hello” *

Stampa l'intera parola corrispondente

Per impostazione predefinita, grep stampa tutte le parole che corrispondono al tuo modello, anche se fanno parte di una parola. Guarda l'immagine qui sotto.

Abbiamo cercato la stringa "fai ” e può vedere tutte le righe che contengono “do ”. Per abbinare la parola esatta, aggiungi "-w ” al tuo comando.

$ grep –w <word> <filename>

Ad esempio, per cercare la parola esatta "fai ” nel file Donuts.txt, il comando sarebbe:

$ grep -w do Donuts.txt

Come puoi vedere, ora stampa solo la riga che contiene la parola esatta "fai ”.

Righe corrispondenti che iniziano con una parola particolare

Per stampare righe che iniziano con una parola particolare, aggiungi "^ ” al tuo comando.

$ grep ^<word> <filename>

Ad esempio, il comando seguente stamperà tutte le righe che iniziano con "Th ”.

$ grep ^Th Donuts.txt

Linee corrispondenti che terminano con un motivo

Per stampare linee che terminano con un motivo particolare, aggiungi "$ ” al tuo comando.

$ grep <word>$ <filename>

Ad esempio, il comando seguente stamperà tutte le righe che terminano con "t ”.

$ grep t$ Donuts.txt

Righe corrispondenti che contengono determinate lettere

Se vuoi cercare le righe che contengono una o più lettere, usa la seguente sintassi:

$ grep “[<letters>]” <filename>

Ad esempio, il comando seguente stampa tutte le righe che contengono qualsiasi lettera da "a" a "f".

$ grep “[a-f]” Donuts.txt

Ricerca ricorsiva

Per cercare tutti i file in una directory e sottodirectory per un particolare modello o parola, utilizzare:

$ grep -R <word> <path>

Ad esempio, il comando seguente elencherà tutti i file che contengono la parola "Hello" nella directory Documents. Nell'output sottostante, puoi vedere i percorsi dei file insieme alle parole corrispondenti.

$ grep -R “Hello” /home/maryam/Documents

Stampa righe specifiche prima/dopo le parole abbinate

Per impostazione predefinita, Grep stampa solo la linea che corrisponde al modello specifico. Con -A opzione in Grep, puoi anche includere alcune righe prima o dopo le parole abbinate.

Righe di stampa dopo la partita

Per stampare le righe che contengono le parole abbinate tra cui N numero di righe dopo le partite:

$ grep -A <N> <word> <filename>

Ad esempio, il comando seguente stamperà la riga contenente la parola "inferno" insieme a 1 riga dopo di essa.

$ grep -A 1 hell Donuts.txt

Righe di stampa prima della partita

Per stampare le righe che contengono le parole abbinate tra cui N numero di righe prima delle partite:

$ grep -B <N> <word> <filename>

Ad esempio, il comando seguente stamperà la riga contenente la parola "inferno" insieme a 1 riga prima.

$ grep -B 1 hell Donuts.txt

Righe di stampa prima e dopo la partita

Per stampare le righe che contengono le parole abbinate tra cui N numero di righe prima e dopo le partite:

$ grep -C <N> <word> <filename>

Ad esempio, il comando seguente stamperà la riga contenente la parola "inferno" insieme a 1 riga prima e dopo di essa.

$ grep -C 1 hell Donuts.txt

Conteggio del numero di partite

Usando il -c opzione con grep, puoi contare le linee che corrispondono a uno schema specifico. Ricorda, corrisponderà solo al numero di righe e non al numero di parole abbinate.

$ grep -c <word> <filename>

Ad esempio, il comando seguente stampa il conteggio delle righe che contiene la parola “Donuts”.

$ grep -c Donuts Donuts.txt

Nota che il nostro file "Donuts.txt" contiene 4 "Donuts", ma -c ha stampato il conteggio solo come 3. Succede perché conta il numero di righe anziché il numero di corrispondenze.

Per ulteriori informazioni su grep, utilizzare il comando seguente:

$ grep --help

oppure visita la pagina man usando il comando seguente:

$ man grep

Questo ti porterà alla pagina del manuale di Grep.

Questo è tutto quello che c'è da fare! In questo post, abbiamo spiegato la sintassi di base e l'utilizzo del comando grep in Linux. Abbiamo anche esaminato alcune opzioni della riga di comando per espandere la sua utilità. Se conosci altri usi del comando Grep in Linux che ci sono sfuggiti, ci piacerebbe conoscerli nei commenti qui sotto.

Esplora questo articolo correlato per scoprire come trovare file e directory in Linux.


Ubuntu
  1. sa Esempi di comandi in Linux

  2. w Esempi di comandi in Linux

  3. ac Esempi di comandi in Linux

  4. Esempi di comandi df in Linux

  5. du Esempi di comandi in Linux

Utilizzo di Cat Command in Linux con esempi

Utilizzo del comando GREP in Linux con esempi

Esempi di comandi touch di Linux

Comando IP Linux con esempi

Comando Grep in Linux (con esempi)

Esempi di comandi id in Linux