GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire la ricerca del modello nei file utilizzando Grep

Nel nostro primo articolo sul comando grep, abbiamo trattato alcune funzionalità offerte dallo strumento, incluso il modo in cui puoi utilizzarlo per cercare solo parole, cercare due parole, contare le righe contenenti parole corrispondenti e altro ancora. Oltre a questi, lo strumento fornisce alcune funzionalità più utili e di facile comprensione. In questo articolo ne discuteremo alcuni.

Tieni presente che tutti gli esempi menzionati in questo tutorial sono stati testati su Ubuntu 14.04LTS. Inoltre, utilizzeremo il seguente file (test_file1.txt) per tutti i nostri esempi relativi a grep in questo tutorial:

Ricerca senza distinzione tra maiuscole e minuscole con Grep

Per impostazione predefinita, grep distingue tra maiuscole e minuscole, il che significa, ad esempio, tratterà "ABC" e "abc" separatamente. Tuttavia, se desideri che la tua ricerca non faccia distinzione tra maiuscole e minuscole, puoi utilizzare -i opzione della riga di comando.

grep -i [string-to-be-searched] [filename]

Ad esempio:

grep -i "linux" test_file1.txt

Nota :Non solo pattern (ad esempio, 'linux' nell'esempio sopra), la pagina man di grep dice che l'opzione -i assicura anche che la distinzione tra maiuscole e minuscole per i file di input venga ignorata. Ecco l'estratto:

 -i, --ignore-case
Ignore case distinctions in both the PATTERN and the input files. (-i is specified by POSIX.)

Tuttavia, non siamo stati in grado di riprodurre il comportamento relativo ai file di input da parte nostra.

Visualizza alcune righe non corrispondenti con una riga contenente una stringa corrispondente in Grep

Utilizzando lo strumento, puoi anche visualizzare un numero specificato di righe dopo, prima o intorno alla riga contenente la stringa corrispondente.

Usa la -A opzione della riga di comando per stampare 'N' righe dopo la riga corrispondente.

$ grep -A N [string-to-be-searched] [filename]

Ad esempio:

$ grep -A 2 "linux" test_file1.txt

Ecco l'output del comando precedente

Allo stesso modo, l'opzione della riga di comando -B viene utilizzata per visualizzare le righe prima della riga corrispondente.

$ grep -B N [string-to-be-searched] [filename]

Ad esempio:

$ grep -B 2 "linux" test_file1.txt

Ecco l'output:

Infine, per stampare le righe attorno alla riga corrispondente, usa l'opzione della riga di comando -C.

$ grep -C N [string-to-be-searched] [filename]

Ad esempio:

$ grep -C 2 "linux" test_file1.txt

Ecco l'output catturato:

Stampa solo stringhe corrispondenti in Grep

È inoltre consentito stampare solo la stringa corrispondente sull'output standard (invece delle righe complete che vengono visualizzate per impostazione predefinita). È possibile accedere a questa funzione utilizzando l'opzione della riga di comando -o.

$ grep -o [string-to-be-searched] [filename]

Ad esempio, se il requisito è cercare una stringa "linux" in un file (ma le righe complete non devono essere stampate), utilizzeremo il comando seguente.

$ grep -o "linux" [file-name]

Possiamo anche usare caratteri jolly come * e .* per grep più di una stringa. Ad esempio, se vogliamo grep un gruppo di parole che iniziano da "come" e terminano con "linux", allora possiamo usare il comando seguente.

$ grep -o “how.*linux” [file-name]

Mostra la posizione in Grep

Il comando grep consente inoltre di visualizzare l'offset di byte della riga in cui si trova la stringa corrispondente. È possibile accedere a questa funzione utilizzando l'opzione della riga di comando -b. Ma per un migliore utilizzo di questa opzione, puoi usarla con l'opzione della riga di comando -o, che visualizzerà la posizione esatta della stringa corrispondente.

$ grep -o -b [string-to-be-searched] [filename]

Ad esempio:

$ grep -o -b "for" test_file1.txt

Ecco l'output:

Conclusione

Potresti non richiedere tutte queste opzioni ogni giorno, ma dovresti almeno conoscerle perché non sai mai quando potrebbero tornare utili. Grep diventa ancora più potente se usato con l'espressione regolare, ma lasceremo quell'argomento per un altro giorno.


Linux
  1. Usando grep per cercare al contrario

  2. Come posso cercare uno schema multilinea in un file?

  3. Riga di comando:cerca e sostituisci in tutti i nomi di file corrispondenti a grep

  4. Come cercare i contenuti di più file pdf?

  5. Come cercare i file usando regex nello script della shell linux

Come escludere in Grep

Come rimuovere file e directory utilizzando la riga di comando di Linux

Come rinominare i file usando la riga di comando in Linux

Come cercare file dalla riga di comando di Linux

Come eseguire la ricerca Grep su tutti i file e in tutte le directory

Come scaricare file in Rocky Linux 8 sulla riga di comando usando wget