Ricerca nel sito web

Utilizzo del comando grep in Linux


Cos'è il grep?

L'utilità grep che vedremo oggi è uno strumento Unix che appartiene alla stessa famiglia delle utilità egrep e fgrep. Questi sono tutti strumenti Unix progettati per eseguire attività di ricerca ripetitiva su file e testo. È possibile cercare file e il loro contenuto per ottenere informazioni utili specificando particolari criteri di ricerca tramite il comando grep.

Quindi dicono che GREP sta per Global Regular Expression Print, ma da dove ha origine questo comando "grep"? grep deriva fondamentalmente da un comando specifico per il semplicissimo e venerabile editor di testo Unix denominato ed. Ecco come va il comando ed:

g/re/p

Lo scopo del comando è abbastanza simile a ciò che intendiamo per ricerca tramite grep. Questo comando recupera tutte le righe in un file che corrispondono a un determinato modello di testo.

Esploriamo ancora un po' il comando grep. In questo articolo spiegheremo l'installazione dell'utilità grep e presenteremo alcuni esempi attraverso i quali potrai imparare esattamente come e in quale scenario puoi utilizzarla.

Abbiamo eseguito i comandi e le procedure menzionati in questo articolo su un sistema Ubuntu 18.04 LTS.

Installa grep

Sebbene l'utilità grep sia fornita di default con la maggior parte dei sistemi Linux, se non l'hai installata sul tuo sistema, ecco la procedura:

Apri il tuo terminale Ubuntu tramite Dash o la scorciatoia Ctrl+Alt+T. Quindi inserisci il seguente comando come root per installare grep tramite apt-get:

sudo apt-get install grep

Immettere y quando viene richiesta l'opzione y/n durante la procedura di installazione. Successivamente, l'utilità grep verrà installata sul tuo sistema.

Puoi verificare l'installazione controllando la versione di grep tramite il seguente comando:

grep --version

Utilizzo del comando grep con esempi

Il comando grep può essere spiegato meglio presentando alcuni scenari in cui può essere utilizzato. Ecco alcuni esempi:

Cerca file

Se desideri cercare un nome file che contenga una parola chiave specifica, puoi filtrare l'elenco dei file tramite il comando grep come segue:

Sintassi:

$ls -l | grep -i “parola ricerca "

Esempi:

ls -l | grep -i sample

Questo comando elencherà tutti i file nella directory corrente con il nome del file contenente la parola “privato”.

Cerca una stringa in un file

Puoi recuperare una frase da un file che contiene una stringa di testo specifica tramite il comando grep.

Sintassi:

nome file grep "stringa"

Esempio :

grep “sample file” sampleFile.txt

Il mio file di esempio sampleFile.txt contiene la frase con la stringa "file di esempio" che puoi vedere nell'output sopra. La parola chiave e la stringa vengono visualizzate in forma colorata nei risultati della ricerca.

Cerca una stringa in più di un file

Nel caso in cui desideri cercare frasi contenenti la tua stringa di testo in tutti i file dello stesso tipo, il comando grep è al tuo servizio.

Sintassi 1:

$grep "string" nomefileParolachiave*

Sintassi 2:

$grep "string" *.estensione

Esempio 1:

grep "sample file” sample*

Questo comando preleverà tutte le frasi contenenti la stringa “sample file” da tutti i file con il nome file contenente la parola chiave “sample”.

Esempio 2:

grep "sample file” *.txt

Questo comando preleverà tutte le frasi contenenti la stringa “file campione” da tutti i file con estensione .txt.

Cerca una stringa in un file senza tenere conto del caso della stringa

Negli esempi precedenti, fortunatamente la mia stringa di testo era nello stesso caso di quella trovata nei miei file di testo di esempio. Se avessi inserito il seguente comando, il risultato della mia ricerca sarebbe pari a zero perché il testo nel mio file non inizia con la parola maiuscola "Sample"

grep "Sample file" *.txt

Diciamo a grep di ignorare il caso della stringa di ricerca e di stampare i risultati della ricerca in base alla stringa tramite l'opzione -i.

Sintassi:

$grep -i nome file "stringa"

Esempio :

grep -i "Sample file" *.txt

Questo comando preleverà tutte le frasi contenenti la stringa “file campione” da tutti i file con estensione .txt. Ciò non terrà conto se la stringa di ricerca era in maiuscolo o minuscolo.

Ricerca sulla base di un'espressione regolare

Tramite il comando grep è possibile specificare un'espressione regolare con una parola chiave iniziale e finale. L'output sarà la frase contenente l'intera espressione compresa tra la parola chiave iniziale e finale specificata. Questa funzionalità è molto potente poiché non è necessario scrivere un'intera espressione nel comando di ricerca.

Sintassi:

$grep "startingKeyword.*endingKeyword " nome file

Esempio :

grep "starting.*.ending" sampleFile.txt

Questo comando stamperà la frase contenente l'espressione (a partire dalla mia parola chiave iniziale e che termina con la mia parola chiave finale) dal file che ho specificato nel comando grep.

Visualizza un numero specifico di righe dopo/prima della stringa di ricerca

È possibile utilizzare il comando grep per stampare N numero di righe prima/dopo una stringa di ricerca da un file. Il risultato della ricerca include anche la riga di testo contenente la stringa di ricerca.

La sintassi per N numero di righe dopo la stringa chiave:

$grep -A nome file "stringa"

Esempio :

grep -A 3 -i "samplestring" sampleFile.txt

Ecco come appare il mio file di testo di esempio:

Ed ecco come appare l'output del comando:

Visualizza 3 righe, inclusa quella contenente la stringa cercata, dal file che ho specificato nel comando grep.

La sintassi per N numero di righe prima della stringa chiave:

$grep -B nome file "stringa"

Puoi anche cercare N numero di righe "intorno" a una stringa di testo. Ciò significa N numero di righe prima e N dopo la stringa di testo.

La sintassi per N numero di righe attorno alla stringa chiave:

$grep -C nome file "stringa"

Attraverso i semplici esempi descritti in questo articolo, puoi padroneggiare il comando grep. È quindi possibile utilizzarlo per cercare risultati filtrati che potrebbero includere file o contenuti del file. Ciò consente di risparmiare molto tempo sprecato sfogliando tutti i risultati della ricerca prima di padroneggiare il comando grep.

Articoli correlati: