GNU/Linux >> Linux Esercitazione >  >> Linux

15 Esempi pratici di comandi Grep in Linux / UNIX


Foto per gentile concessione di Alexôme

Dovresti avere una presa sul comando Linux grep.

Questo fa parte della serie in corso di 15 esempi, in cui verranno forniti 15 esempi dettagliati per un comando o una funzionalità specifici. In precedenza abbiamo discusso 15 esempi pratici per il comando find di Linux, la cronologia della riga di comando di Linux e il comando mysqladmin.


In questo articolo esaminiamo 15 esempi pratici del comando grep di Linux che saranno molto utili sia per i principianti che per gli esperti.


Prima crea il seguente demo_file che verrà utilizzato negli esempi seguenti per dimostrare il comando grep.

$ cat demo_file
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.

Two lines above this line is empty.
And this is the last line.

1. Cerca la stringa data in un singolo file

L'utilizzo di base del comando grep consiste nel cercare una stringa specifica nel file specificato come mostrato di seguito.

Syntax:
grep "literal_string" filename

$ grep "this" demo_file
this line is the 1st lower case line in this file.
Two lines above this line is empty.
And this is the last line.

2. Verifica della stringa data in più file.

Syntax:
grep "string" FILE_PATTERN


Questo è anche un utilizzo di base del comando grep. Per questo esempio, copiamo demo_file in demo_file1. L'output di grep includerà anche il nome del file davanti alla riga che corrisponde al modello specifico, come mostrato di seguito. Quando la shell di Linux vede il metacarattere, esegue l'espansione e fornisce tutti i file come input a grep.

$ cp demo_file demo_file1

$ grep "this" demo_*
demo_file:this line is the 1st lower case line in this file.
demo_file:Two lines above this line is empty.
demo_file:And this is the last line.
demo_file1:this line is the 1st lower case line in this file.
demo_file1:Two lines above this line is empty.
demo_file1:And this is the last line.

3. Ricerca senza distinzione tra maiuscole e minuscole utilizzando grep -i

Syntax:
grep -i "string" FILE


Questo è anche un utilizzo di base di grep. Questo cerca la stringa/il modello specificato senza distinzione tra maiuscole e minuscole. Quindi corrisponde a tutte le parole come "the", "THE" e "The" maiuscole e minuscole come mostrato di seguito.

$ grep -i "the" demo_file
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.
And this is the last line.

4. Abbina l'espressione regolare nei file

Syntax:
grep "REGEX" filename


Questa è una funzionalità molto potente, se puoi usare l'espressione regolare in modo efficace. Nell'esempio seguente, cerca tutto il modello che inizia con "linee" e termina con "vuoto" con qualsiasi cosa nel mezzo. cioè per cercare "lines[anything in-between]vuoto" nel demo_file.

$ grep "lines.*empty" demo_file
Two lines above this line is empty.

Dalla documentazione di grep:un'espressione regolare può essere seguita da uno dei numerosi operatori di ripetizione:

  • ? L'elemento precedente è facoltativo e abbinato al massimo una volta.
  • * L'elemento precedente verrà abbinato zero o più volte.
  • + L'elemento precedente verrà abbinato una o più volte.
  • {n} L'elemento precedente corrisponde esattamente n volte.
  • {n,} L'elemento precedente è abbinato n o più volte.
  • {,m} L'elemento precedente è abbinato al massimo m volte.
  • {n,m} L'elemento precedente è abbinato almeno n volte, ma non più di m volte.

5. Controllo delle parole complete, non delle sottostringhe usando grep -w

Se vuoi cercare una parola ed evitare che corrisponda alle sottostringhe, usa l'opzione -w. Basta eseguire una normale ricerca per mostrare tutte le righe.

L'esempio seguente è il normale grep in cui cerca "is". Quando cerchi "è", senza alcuna opzione mostrerà "è", "suo", "questo" e tutto ciò che ha la sottostringa "è".

$ grep -i "is" demo_file
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.
Two lines above this line is empty.
And this is the last line.


L'esempio seguente è la WORD grep in cui cerca solo la parola "è". Si noti che questo output non contiene la riga "Questa riga ha tutto il suo primo carattere della parola con lettere maiuscole", anche se "è" è presente in "Questo", poiché quanto segue cerca solo la parola "è" ” e non per “questo”.

$ grep -iw "is" demo_file
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
Two lines above this line is empty.
And this is the last line.

6. Visualizzazione delle righe prima/dopo/intorno alla partita usando grep -A, -B e -C

Quando si esegue un grep su un file di grandi dimensioni, può essere utile vedere alcune righe dopo la corrispondenza. Potresti sentirti a tuo agio se grep può mostrarti non solo le linee corrispondenti ma anche le linee dopo/prima/intorno alla partita.


Crea il seguente file demo_text per questo esempio.

$ cat demo_text
4. Vim Word Navigation

You may want to do several navigation in relation to the words, such as:

 * e - go to the end of the current word.
 * E - go to the end of the current WORD.
 * b - go to the previous (before) word.
 * B - go to the previous (before) WORD.
 * w - go to the next word.
 * W - go to the next WORD.

WORD - WORD consists of a sequence of non-blank characters, separated with white space.
word - word consists of a sequence of letters, digits and underscores.

Example to show the difference between WORD and word

 * 192.168.1.1 - single WORD
 * 192.168.1.1 - seven words.

6.1 Visualizza N righe dopo la partita

-A è l'opzione che stampa le N righe specificate dopo la corrispondenza come mostrato di seguito.

Syntax:
grep -A <N> "string" FILENAME


L'esempio seguente stampa la riga corrispondente, insieme alle 3 righe successive.

$ grep -A 3 -i "example" demo_text
Example to show the difference between WORD and word

* 192.168.1.1 - single WORD
* 192.168.1.1 - seven words.

6.2 Visualizza N righe prima della partita

-B è l'opzione che stampa le N righe specificate prima della corrispondenza.

Syntax:
grep -B <N> "string" FILENAME


Quando avevi la possibilità di mostrare le N righe dopo la corrispondenza, hai l'opzione -B per il contrario.

$ grep -B 2 "single WORD" demo_text
Example to show the difference between WORD and word

* 192.168.1.1 - single WORD

6.3 Visualizza N righe intorno alla corrispondenza

-C è l'opzione che stampa le N righe specificate prima della corrispondenza. In alcune occasioni potresti voler far apparire la partita con le linee di entrambi i lati. Questa opzione mostra N linee in entrambi i lati (prima e dopo) della partita.

$ grep -C 2 "Example" demo_text
word - word consists of a sequence of letters, digits and underscores.

Example to show the difference between WORD and word

* 192.168.1.1 - single WORD

7. Evidenziando la ricerca utilizzando GREP_OPTIONS

Poiché grep stampa le righe dal file in base al modello/stringa che avevi fornito, se volevi evidenziare quale parte corrisponde alla riga, devi seguire il modo seguente.

Quando esegui la seguente esportazione otterrai l'evidenziazione delle ricerche abbinate. Nell'esempio seguente, evidenzierà tutto ciò quando imposti la variabile di ambiente GREP_OPTIONS come mostrato di seguito.

$ export GREP_OPTIONS='--color=auto' GREP_COLOR='100;8'

$ grep this demo_file
this line is the 1st lower case line in this file.
Two lines above this line is empty.
And this is the last line.

8. Ricerca in tutti i file ricorsivamente usando grep -r

Quando vuoi cercare in tutti i file nella directory corrente e nella sua sottodirectory. -r opzione è quella che devi usare. L'esempio seguente cercherà la stringa "ramesh" in tutti i file nella directory corrente e in tutte le sue sottodirectory.

$ grep -r "ramesh" *

9. Inverti la corrispondenza usando grep -v

Hai avuto diverse opzioni per mostrare le righe abbinate, per mostrare le righe prima della corrispondenza, per mostrare le righe dopo la corrispondenza e per evidenziare la corrispondenza. Quindi sicuramente vorresti anche che l'opzione -v inverta la corrispondenza.

Quando si desidera visualizzare le righe che non corrispondono alla stringa/modello specificato, utilizzare l'opzione -v come mostrato di seguito. Questo esempio mostrerà tutte le righe che non corrispondono alla parola "vai".

$ grep -v "go" demo_text
4. Vim Word Navigation

You may want to do several navigation in relation to the words, such as:

WORD - WORD consists of a sequence of non-blank characters, separated with white space.
word - word consists of a sequence of letters, digits and underscores.

Example to show the difference between WORD and word

* 192.168.1.1 - single WORD
* 192.168.1.1 - seven words.

10. visualizzare le linee che non corrispondono a tutto il modello dato.

Syntax:
grep -v -e "pattern" -e "pattern"

$ cat test-file.txt
a
b
c
d

$ grep -v -e "a" -e "b" -e "c" test-file.txt
d

11. Contando il numero di corrispondenze usando grep -c

Quando vuoi contare quante righe corrispondono al modello/stringa dato, usa l'opzione -c.

Syntax:
grep -c "pattern" filename

$ grep -c "go" demo_text
6


Quando vuoi, scopri quante linee corrispondono allo schema

$ grep -c this demo_file
3


Quando vuoi, scopri quante righe non corrispondono allo schema

$ grep -v -c this demo_file
4

12. Visualizza solo i nomi di file che corrispondono al modello dato usando grep -l

Se vuoi che grep mostri solo i nomi di file che corrispondono al modello dato, usa l'opzione -l (L minuscola).

Quando fornisci più file a grep come input, mostra i nomi del file che contiene il testo che corrisponde al pattern, sarà molto utile quando proverai a trovare alcune note nell'intera struttura della tua directory.

$ grep -l this demo_*
demo_file
demo_file1

13. Mostra solo la stringa corrispondente

Per impostazione predefinita, grep mostrerà la riga che corrisponde al modello/stringa data, ma se vuoi che grep mostri solo la stringa corrispondente del modello, usa l'opzione -o.

Potrebbe non essere molto utile quando dai la stringa direttamente in avanti. Ma diventa molto utile quando dai un pattern regex e provi a vedere a cosa corrisponde

$ grep -o "is.*line" demo_file
is line is the 1st lower case line
is line
is is the last line

14. Mostra la posizione della corrispondenza nella riga

Quando vuoi che grep mostri la posizione in cui corrisponde al modello nel file, usa le seguenti opzioni come

Syntax:
grep -o -b "pattern" file

$ cat temp-file.txt
12345
12345

$ grep -o -b "3" temp-file.txt
2:3
8:3


Nota: L'output del comando grep sopra non è la posizione nella riga, è l'offset di byte dell'intero file.

15. Mostra il numero di riga durante la visualizzazione dell'output utilizzando grep -n

Per mostrare il numero di riga del file con la riga corrispondente. Esegue la numerazione delle righe in base a 1 per ogni file. Usa l'opzione -n ​​per utilizzare questa funzione.

$ grep -n "go" demo_text
5: * e - go to the end of the current word.
6: * E - go to the end of the current WORD.
7: * b - go to the previous (before) word.
8: * B - go to the previous (before) WORD.
9: * w - go to the next word.
10: * W - go to the next WORD.

Esercitazioni Grep aggiuntive

  • 7 Esempi di operatori Linux Grep OR, Grep AND, Grep NOT
  • Espressioni regolari nel comando Grep con 10 esempi – Parte I
  • Espressioni regolari avanzate nel comando Grep con 10 esempi – Parte II
  • Cerca in un file *.bz2 usando bzgrep e in un file *.gz usando zgrep

Fantastici articoli su Linux

Di seguito sono riportati alcuni fantastici 15 esempi articoli che potresti trovare utili.

  • Linux Crontab:15 fantastici esempi di Cron Job
  • Mamma, l'ho trovato! — 15 Esempi pratici di comandi Trova Linux
  • 15 esempi per padroneggiare la cronologia della riga di comando di Linux
  • Comando Unix LS:15 esempi pratici

Linux
  1. Comando cp in Linux:7 esempi pratici

  2. Comando di arresto di Linux:5 esempi pratici

  3. 5 Esempi pratici del comando dd in Linux

  4. UNIX / Linux:10 esempi di comandi Netstat

  5. 10 esempi pratici di comandi Linux nm

5 esempi pratici di Tail Command in Linux

echo Command in Linux:7 esempi pratici

Comando Grep in Linux (con esempi)

Comando Grep in Linux/UNIX

Pratico comando Ping negli esempi di Linux

UNIX / Linux:7 esempi pratici di comandi PS per il monitoraggio dei processi