grep

Comando egrep di Linux con esempi

Comando egrep di Linux con esempi
Il comando egrep appartiene alla famiglia del comando grep che viene utilizzato per la ricerca di pattern in Linux. Se hai usato il comando grep, egrep funziona come grep -E (grep Extended regex'). Egrep esegue la scansione di un file specifico, riga per riga e stampa le righe che contengono la stringa di ricerca/l'espressione regolare. In questo articolo spiegheremo 15 utili esempi dei comandi egrep che aiuteranno i neofiti e anche gli esperti a eseguire ricerche significative in Linux Abbiamo eseguito questi esempi su un sistema Debian 10  Buster ma possono essere facilmente replicati sulla maggior parte delle distribuzioni 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 riga contenente la stringa cercata.

Sintassi:

$ egrep "stringa_ricerca" nome file

Esempio:

$ egrep file di esempio debian.TXT

In questo esempio, ho cercato la parola "debian" nel file di testo specificato. Puoi vedere come i risultati mostrano l'intera riga che contiene la parola "debian":

Esempio 2: ricerca di una stringa specifica in più file

Con il comando egrep, puoi cercare una stringa tra più file che risiedono nella stessa directory. Devi solo essere un po' più specifico nel fornire un "modello" per i file cercati. Questo diventerà più chiaro con l'esempio che presenteremo.

Sintassi:

$ egrep "stringa_ricerca" filename_pattern

Esempio:

Qui, cercheremo la parola "debian" in tutte le .txt specificando il modello del nome file come segue:

$ egrep “debian” *.TXT

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

Esempio 3: ricerca ricorsiva della 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 "stringa_ricerca" *

Esempio:

In questo esempio, sto cercando la parola "campione" nei file dell'intera directory corrente (Download).

$ egrep -r "campione" *

I risultati contengono tutte le righe, insieme ai nomi dei file, che contengono la parola "campione" da tutti i file nella directory Download e le sue sottodirectory.

Esempio 4: eseguire una ricerca senza distinzione tra maiuscole e minuscole

Con il flag -i, puoi usare il comando egrep per stampare i risultati in base a una stringa di ricerca senza doversi preoccupare del suo caso.

Sintassi:

$ egrep -i nome file "stringa_ricerca"

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 nome file "stringa_ricerca"

Puoi vedere come il flag -i mi ha aiutato a recuperare tutte le righe che contengono la stringa di ricerca attraverso una ricerca "insensibile" alle maiuscole.

Esempio 5: ricerca di una stringa come parola intera e non come sottostringa

Quando normalmente cerchi una stringa tramite egrep, stampa tutte le parole che contengono la stringa come sottostringa. Ad esempio, cercando la stringa "on" verranno stampate tutte le parole contenenti la stringa "on" come "on", "solo", "monitor", "clone", ecc. Se vuoi che i risultati visualizzino solo la parola "on" come parola intera e non come sottostringa, puoi usare il flag -w con egrep.

Sintassi:

$ egrep -w nome file “stringa_ricerca”

Esempio:

Qui sto cercando la stringa "on" in un file di esempio:

$ egrep -i file di esempio "on".TXT

Puoi vedere nell'output sopra, che contiene anche la parola "solo". Tuttavia, questo non è quello che voglio perché sto cercando esclusivamente la parola "on". Quindi, questo è il comando che userò invece:

$ egrep -iw "on" file di esempio.TXT

Ora i miei risultati di ricerca includono solo le righe che contengono la parola "on" come parola intera.

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

A volte vogliamo solo recuperare i nomi dei file che contengono una stringa specifica, 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 "stringa_ricerca" filename_pattern

Esempio:

Qui sto cercando la stringa “campione” in tutte le .txt nella directory corrente:

$ egrep -l campione *.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 riga che contiene la stringa di ricerca, puoi usare il comando egrep per stampare la stringa stessa. La stringa verrà stampata il numero di volte in cui appare nel file specificato.

Sintassi:

$ egrep -o "search_string" nome file

Esempio:

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

$ egrep -o Questo file di esempio_.TXT

Nota: questo utilizzo del comando è utile quando si cerca 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 righe prima, dopo o intorno alla stringa di ricerca

A volte è molto importante conoscere il contesto in un file in cui viene utilizzata una stringa specifica. L'egrep è utile nel senso che può essere utilizzato per visualizzare la riga contenente la stringa di ricerca e anche un numero specifico di righe 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 modo seguente verrà visualizzata la riga contenente la stringa di ricerca e il numero N di righe dopo di essa:

$ egrep -A nome file "stringa_ricerca"

Esempio:

$ egrep -A 2 "campione" file di esempio.TXT

N numero di righe Prima della stringa di ricerca:

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

$ egrep -B nome file "stringa_ricerca"

Esempio:

$ egrep -B 2 "campione" file di esempio.TXT

N numero di righe Prima della stringa di ricerca:

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

$ egrep -C nome file "stringa_ricerca"

Esempio:

$ egrep -C 2 "campione" file di esempio.TXT

Esempio 9:  Corrispondenza di espressioni regolari nei file

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

Sintassi:

$ egrep "Espressioni Regolari" nomefile

Spieghiamo come puoi usare le espressioni regolari nella tua ricerca egrep:

Operatore di ripetizione Uso
? L'elemento precedente prima ? è facoltativo ed è abbinato al massimo una volta

* L'elemento precedente prima di * verrà abbinato zero o più volte
+ L'elemento precedente prima di + verrà abbinato una o più volte
n L'elemento precedente corrisponde esattamente n numero di 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

Esempio:

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

iniziando con "Gnome" e finendo con "programmi"

Esempio 10: evidenziare la stringa di ricerca

Quando imposti la variabile di ambiente GREP_OPTIONS come di seguito, ottieni il tuo output con la stringa/modello di ricerca evidenziato nei risultati:

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

Puoi quindi cercare la stringa in qualsiasi modo descritto negli esempi di questo articolo.

Esempio 11: esecuzione della ricerca inversa in un file

Per ricerca invertita, intendiamo che il comando egrep stampa tutto nel file, tranne le righe che contengono la stringa di ricerca. Useremo il seguente file di esempio per spiegare la ricerca invertita tramite egrep. Abbiamo stampato il contenuto del file usando il comando cat:

Sintassi:

$ egrep -v "stringa_ricerca" nome file

Esempio:

Dal file di esempio di cui abbiamo parlato, vogliamo omettere la riga contenente la parola "due" nell'output, quindi utilizzeremo il seguente comando:

$ egrep -v "due" file di esempio_.TXT

Puoi vedere come l'output contenga tutto dal file di esempio tranne la seconda riga che conteneva la stringa di ricerca "due".

Esempio 12:  Esecuzione di una ricerca inversa basata su più criteri/schema di ricerca

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

Useremo lo stesso file di esempio che abbiamo menzionato nell'esempio 11 per spiegare questo scenario.

Sintassi:

$ egrep -v -e "stringa_ricerca"/”schema” -e "stringa_ricerca"/”schema”
… nome del file

Esempio:

Dal file di esempio di cui abbiamo parlato, vogliamo omettere la/e riga/e che contengono le parole "uno" e "due" nell'output, quindi utilizzeremo 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: stampa del numero di righe che corrispondono alla stringa di ricerca

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

Sintassi:

$ egrep -c "stringa_ricerca" nome file

Esempio:

In questo esempio, utilizzeremo il flag -c per contare il numero di righe che contengono la parola "Questo" nel nostro file di esempio:

$ egrep -c "Questo" nome file

Puoi anche utilizzare la funzione di ricerca invertita qui per contare e stampare il numero di righe che non contengono la stringa di ricerca: 

$ grep -v -c "stringa_ricerca" nome file

Esempio 14: visualizzazione del numero di riga in cui viene trovata la stringa

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

Sintassi:

$ grep -n nome file "stringa_ricerca"

Esempio:

$ grep -n "Questo" file di esempio_.TXT

Puoi vedere come vengono visualizzati i numeri di riga rispetto ai risultati della ricerca.

Esempio 15: visualizzazione della posizione nel file in cui corrisponde la stringa di ricerca

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

$ grep -o -b "stringa_ricerca" nome file

Esempio:

$ grep -o -b "Questo" file di esempio_.TXT

I risultati della ricerca stampano l'offset in byte del file in cui esiste la parola di ricerca.Questo era un uso dettagliato del comando egrep. Utilizzando una combinazione dei flag spiegati in questo articolo, puoi eseguire ricerche più significative e complesse sui tuoi file.

Le migliori distribuzioni Linux per il gioco nel 2021
Il sistema operativo Linux ha fatto molta strada dal suo aspetto originale, semplice e basato su server. Questo sistema operativo è notevolmente migli...
Come acquisire e riprodurre in streaming la tua sessione di gioco su Linux
In passato, giocare era considerato solo un hobby, ma con il tempo l'industria dei giochi ha visto una crescita enorme in termini di tecnologia e nume...
I migliori giochi da giocare con il tracciamento delle mani
Oculus Quest ha recentemente introdotto la grande idea del tracciamento manuale senza controller. Con un numero sempre crescente di giochi e attività ...