Il comando egrep appartiene alla famiglia del comando grep che è usato per la ricerca di pattern in Linux. Se hai usato il comando grep, egrep funziona allo stesso modo di grep -E (grep Extended regex’). Egrep analizza un file specifico, riga per riga, e stampa la riga o le righe che contengono la stringa di ricerca/espressione regolare. In questo articolo, spiegheremo 15 utili esempi dei comandi egrep che aiuteranno i neofiti e anche gli esperti ad eseguire ricerche significative in LinuxAbbiamo eseguito questi esempi su un sistema Debian 10 Buster ma possono essere facilmente replicati sulla maggior parte delle distro Linux.

Esempio 1: Ricerca di una stringa specifica in un file

Questo è l’uso più comune del comando egrep. Quello che fai è specificare una stringa che vuoi cercare e il nome del file in cui vuoi cercare quella stringa. Il risultato mostra quindi l’intera linea contenente la stringa cercata.

Sintassi:

$ egrep “search_string” filename

Esempio:

$ egrep debian samplefile.txt

In questo esempio, ho cercato la parola “debian” nel file di testo specificato. Puoi vedere come i risultati mostrano l’intera linea che contiene la parola “debian”:

Esempio 2: Cercare una stringa specifica in più file

Con il comando egrep, puoi cercare una stringa tra più file residenti nella stessa directory. Dovete solo essere un po’ più specifici nel fornire un “modello” per i file cercati. Questo diventerà più chiaro con l’esempio che presenteremo.

Sintassi:

$ egrep “search_string” filename_pattern

Esempio:

Qui, cercheremo la parola “debian” in tutti i file .txt specificando il pattern del nome del file come segue:

$ egrep “debian” *.txt

Il comando ha stampato tutte le righe, insieme ai nomi dei file che contengono la parola “debian” da tutti i file .txt nella directory corrente.

Esempio 3: Cercare ricorsivamente la stringa nell’intera directory

Quando vuoi cercare una stringa in tutti i file di una directory e delle sue sottodirectory, puoi farlo usando il flag -r con il comando egrep.

Sintassi:

$ egrep -r “search_string” *

Esempio:

In questo esempio, sto cercando la parola “sample” nei file dell’intera directory corrente (Downloads).

$ egrep -r “sample” *

I risultati contengono tutte le righe, insieme ai nomi dei file, che contengono la parola “sample” da tutti i file della directory Downloads, e le sue sotto directory.

Esempio 4: eseguire una ricerca senza distinzione di caso

Con il flag -i, puoi usare il comando egrep per stampare i risultati basati su una stringa di ricerca senza doverti preoccupare del suo caso.

Sintassi:

$ egrep -i “search_string” filename

Esempio:

Qui, sto cercando la parola “debian” e voglio che i risultati mostrino tutte le righe del file che contengono la parola “debian” o “Debian, indipendentemente dal suo caso.

$ egrep -i “search_string” filename

Puoi vedere come il flag -i mi ha aiutato a recuperare tutte le righe che contengono la stringa di ricerca attraverso una ricerca case “insensitive”.

Esempio 5: Cercare una stringa come parola intera e non come sottostringa

Quando si cerca normalmente una stringa con egrep, vengono stampate tutte le parole che contengono la stringa come sottostringa. Per esempio, cercando la stringa “on” verranno stampate tutte le parole che contengono la stringa “on” come ” on”, “only”, “monitor”, “clone”, ecc. Se vuoi che i risultati mostrino solo la parola “on” come parola completa e non come sottostringa, puoi usare il flag -w con egrep.

Sintassi:

$ egrep -w “search_string” filename

Esempio:

Qui sto cercando la stringa “on” in un file campione:

$ egrep -i “on” samplefile.txt

Si può vedere nell’output di cui sopra, che contiene anche la parola “only”. Tuttavia, questo non è quello che voglio, perché sto cercando esclusivamente la parola “on”. Quindi, questo è il comando che userò invece:

$ egrep -iw “on” samplefile.txt

Ora i miei risultati di ricerca includono solo le linee che contengono la parola “on” come parola intera.

Esempio 6: stampare solo i nomi dei file che contengono la stringa

A volte vogliamo recuperare solo i nomi dei file che contengono una specifica stringa, piuttosto che stampare le righe che la contengono. Questo può essere fatto usando il flag -l (L minuscola) con il comando egrep.

Sintassi:

$ egrep -l “search_string” filename_pattern

Esempio:

Qui sto cercando la stringa “sample” in tutti i file .txt nella directory corrente:

$ egrep -l sample *.txt

I risultati della ricerca stampano solo il nome dei file che contengono la stringa specificata.

Esempio 7: stampare solo la stringa di ricerca da un file

Invece di stampare l’intera linea che contiene la stringa di ricerca, puoi usare il comando egrep per stampare la stringa stessa. La stringa sarà stampata il numero di volte che appare nel file specificato.

Sintassi:

$ egrep -o “search_string” filename

Esempio:

In questo esempio, sto cercando la parola “Questo” nel mio file.

$ egrep -o This samplefile_.txt

Nota: Questo uso del comando è utile quando stai cercando una stringa basata su un modello di espressione regolare. Spiegheremo le espressioni regolari in dettaglio in uno dei prossimi esempi.

Esempio 8: Visualizzare n numero di linee prima, dopo o intorno alla stringa di ricerca

A volte è molto importante conoscere il contesto in un file dove viene usata una specifica stringa. L’egrep torna utile nel senso che può essere usato per visualizzare la linea che contiene la stringa di ricerca e anche un numero specifico di linee prima, dopo e intorno ad essa.

Questo è il file di testo di esempio che userò per spiegare i prossimi esempi:

N numero di righe Dopo la stringa di ricerca:

Utilizzando il flag A nel seguente modo, verrà visualizzata la riga contenente la stringa di ricerca e N numero di righe dopo di essa:

$ egrep -A <N> “search_string” filename

Esempio:

$ egrep -A 2 “sample” samplefile.txt

N numero di linee prima della stringa di ricerca:

Utilizzando il flag B nel modo seguente, verrà visualizzata la linea contenente la stringa di ricerca e N numero di linee prima di essa:

$ egrep -B <N> “search_string” filename

Esempio:

$ egrep -B 2 “sample” samplefile.txt

N numero di linee Prima della stringa di ricerca:

Utilizzando il flag C nel modo seguente verrà visualizzata la linea contenente la stringa di ricerca, e N numero di linee prima e dopo di essa:

$ egrep -C <N> “search_string” filename

Esempio:

$ egrep -C 2 “sample” samplefile.txt

Esempio 9: Corrispondenza delle espressioni regolari nei file

Il comando egrep diventa più potente quando si cercano espressioni regolari invece di solide stringhe di ricerca in un file.

Sintassi:

$ egrep “RegularExpressions” filename

Vi spieghiamo come potete usare le espressioni regolari nella vostra ricerca egrep:

Operatore di ripetizione Usa
? L’elemento precedente a ? è opzionale e viene abbinato al massimo una volta
* L’elemento precedente a * sarà abbinato zero o più volte
+ La voce precedente a + sarà abbinata una o più volte
{n} La voce precedente è abbinata esattamente n volte.
{n,} L’elemento precedente è abbinato n o più volte
{,m} L’elemento precedente è abbinato massimo m volte
{n,m} L’elemento precedente è abbinato almeno n volte ma non più di m volte

Esempio:

Nell’esempio seguente, le righe contenenti la seguente espressione vengono abbinate:

che inizia con “Gnome” e termina con ” programs”

Esempio 10: Evidenziazione della stringa di ricerca

Quando si imposta la variabile d’ambiente GREP_OPTIONS come segue, si ottiene l’output con la stringa/il modello di ricerca evidenziata nei risultati:

$ sudo export GREP_OPTIONS=’–color=auto’ GREP_COLOR=’100;8′

Puoi poi cercare la stringa in qualsiasi modo che abbiamo descritto negli esempi di questo articolo.

Esempio 11: eseguire la ricerca inversa in un file

Con ricerca inversa, intendiamo che il comando egrep stampa tutto nel file, tranne le linee che contengono la stringa di ricerca. Useremo il seguente file di esempio per spiegare la ricerca inversa attraverso egrep. Abbiamo stampato il contenuto del file usando il comando cat:

Sintassi:

$ egrep -v “search_string” filename

Example:

Dal file di esempio che abbiamo menzionato, vogliamo omettere la riga contenente la parola “due” nell’output, quindi useremo il seguente comando:

$ egrep -v “due” samplefile_.txt

Puoi vedere come l’output contiene tutto il contenuto del file di esempio tranne la seconda linea che conteneva la stringa di ricerca “due”.

Esempio 12: Eseguire una ricerca inversa basata su più criteri/schemi di ricerca

Con il flag -v, puoi anche fare in modo che il comando egrep esegua una ricerca inversa basata su più di una stringa/schema di ricerca.

Utilizzeremo lo stesso file di esempio che abbiamo menzionato nell’esempio 11 per spiegare questo scenario.

Sintassi:

$ egrep -v -e “search_string”/”pattern” -e “search_string”/”pattern”
…. filename

Esempio:

Dal file di esempio che abbiamo menzionato, vogliamo omettere la linea o le linee contenenti le parole “uno” e “due” nell’output, quindi useremo il seguente comando:

$ egrep -v -e “uno” -e “due” samplefile_.txt

Abbiamo fornito due parole da omettere usando il flag -e, quindi l’output apparirà come segue:

Esempio 13: stampare il numero di linee che corrispondono alla stringa di ricerca

Invece di stampare la stringa cercata dal file o le linee che la contengono, puoi usare il comando egrep per contare e stampare il numero di linee che corrispondono alla stringa. Questo conteggio può essere recuperato usando il flag -c con il comando egrep.

Sintassi:

$ egrep -c “search_string” filename

Esempio:

In questo esempio, useremo il flag -c per contare il numero di linee che contengono la parola “This” nel nostro file di esempio:

$ egrep -c “This” filename

Puoi anche usare la funzione di ricerca inversa qui per contare e stampare il numero di linee che non contengono la stringa di ricerca:

$ grep -v -c “search_string” filename

Esempio 14: Visualizzazione del numero di linea in cui la stringa è stata trovata

Con il flag -n, puoi fare in modo che il comando egrep stampi la linea trovata insieme al numero di linea che contiene la stringa di ricerca.

Sintassi:

$ grep -n “search_string” filename

Esempio:

$ grep -n “Questo” samplefile_.txt

Si può vedere come vengono visualizzati i numeri di linea rispetto ai risultati della ricerca.

Esempio 15: Visualizzazione della posizione nel file dove la stringa di ricerca corrisponde

Se vuoi conoscere la posizione nel file dove esiste la stringa di ricerca, puoi usare il flag -b con il comando egrep.

$ grep -o -b “search_string” filename

Esempio:

$ grep -o -b “Questo” samplefile_.txt

I risultati della ricerca stampano l’offset in byte del file dove esiste la parola di ricerca. Usando una combinazione dei flag spiegati in questo articolo, puoi eseguire ricerche più significative e complesse sui tuoi file.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.