Cosa è Grep
Grep, abbreviazione di “global regular expression print”, è un comando utilizzato per cercare e corrispondere a modelli di testo nei file contenuti nelle espressioni regolari. Inoltre, il comando è preinstallato in ogni distribuzione Linux. In questa guida, esamineremo gli utilizzi più comuni del comando grep, insieme ai casi d’uso popolari.
Comando Grep in Linux
Il comando Grep può essere utilizzato per trovare o cercare un’espressione regolare o una stringa in un file di testo. Per dimostrarlo, creiamo un file di testo welcome.txt e aggiungiamo un po’ di contenuto come mostrato.
Welcome to Linux !
Linux is a free and opensource Operating system that is mostly used by
developers and in production servers for hosting crucial components such as web
and database servers. Linux has also made a name for itself in PCs.
Beginners looking to experiment with Linux can get started with friendlier linux
distributions such as Ubuntu, Mint, Fedora and Elementary OS.
Ottimo! Ora siamo pronti a eseguire alcuni comandi grep e manipolare l’output per ottenere i risultati desiderati. Per cercare una stringa in un file, esegui il comando seguente Sintassi
$ grep "string" file name
OPPURE
$ filename grep "string"
Esempio:
$ grep "Linux" welcome.txt
Output Come puoi vedere, grep non ha solo cercato e corrisposto alla stringa “Linux”, ma ha anche stampato le linee in cui appare la stringa. Se il file si trova in un percorso diverso, assicurati di specificare il percorso del file come mostrato di seguito
$ grep "string" /path/to/file
Colorizzazione dei risultati di Grep utilizzando l’opzione –color
Se stai lavorando su un sistema che non visualizza la stringa di ricerca o il modello in un colore diverso dal resto del testo, utilizza l’opzione --color
per far risaltare i tuoi risultati. Esempio
$ grep --color "free and opensource" welcome.txt
Output
Ricerca di una stringa in modo ricorsivo in tutte le directory
Se desideri cercare una stringa nella tua directory corrente e in tutte le sottodirectory, esegui la ricerca utilizzando il flag - r
come mostrato
$ grep -r "string-name" *
Per esempio
$ grep -r "linux" *
Output
Ignorare la sensibilità al caso
Nell’esempio sopra, i nostri risultati di ricerca ci hanno dato ciò che volevamo perché la stringa “Linux” era specificata in maiuscolo e esiste anche nel file in maiuscolo. Ora proviamo a cercare la stringa in minuscolo.
$ grep "linux" file name
Niente dall’output, giusto? Questo perché grep non è riuscito a trovare e a fare corrispondere la stringa “linux” poiché la prima lettera è minuscola. Per ignorare la sensibilità delle maiuscole e minuscole, utilizza il flag -i
ed esegui il comando seguente
$ grep -i "linux" welcome.txt
Output Fantastico, vero? Il
-i
viene normalmente utilizzato per visualizzare le stringhe indipendentemente dalla loro sensibilità delle maiuscole e minuscole.
Contare le righe in cui le stringhe corrispondono con l’opzione -c
Per contare il numero totale di righe in cui il modello di stringa appare o risiede, esegui il comando seguente
$ grep -c "Linux" welcome.txt
Output
Utilizzare Grep per invertire l’output
Per invertire l’output di Grep, utilizza il flag -v
. L’opzione -v
istruisce grep a stampare tutte le righe che non contengono o corrispondono all’espressione. L’opzione -v indica a grep di invertire il suo output, il che significa che invece di stampare le righe corrispondenti, fa l’opposto e stampa tutte le righe che non corrispondono all’espressione. Tornando al nostro file, facciamo visualizzare i numeri di riga come mostrato. Premi ESC sull’editor Vim, digita due punti seguiti da
set nu
. Successivamente, premi Invio. Output Ora, per visualizzare le righe che non contengono la stringa “Linux”, esegui
$ grep -v "Linux" welcome.txt
Output Come puoi vedere, grep ha visualizzato le righe che non contengono il modello di ricerca.
Numerare le righe che contengono il modello di ricerca con l’opzione -n
Per numerare le righe in cui il pattern di stringa è corrisposto, utilizza l’opzione -n
come mostrato
$ grep -n "Linux" welcome.txt
Output
Cerca la corrispondenza esatta della parola utilizzando l’opzione -w
Passando quindi il flag -w
verrà cercata la riga contenente la parola corrispondente esatta come mostrato
$ grep -w "opensource" welcome.txt
Output Tuttavia, se provi
$ grep -w "open" welcome.txt
NON verranno restituiti risultati perché non stiamo cercando un modello ma una parola esatta!
Utilizzo delle pipe con grep
Il comando grep può essere utilizzato insieme alle pipe per ottenere un output distinto. Ad esempio, Se vuoi sapere se un certo pacchetto è installato nel sistema Ubuntu esegui
$ dpkg -L | grep "package-name"
Ad esempio, per scoprire se OpenSSH è stato installato nel tuo sistema, esegui il comando dpkg -l
con grep come mostrato
$ dpkg -L | grep -i "openssh"
Output
Visualizzazione del numero di righe prima o dopo un modello di ricerca Utilizzo delle barre verticali
Puoi utilizzare il -A o il -B per visualizzare il numero di righe che precedono o seguono la stringa di ricerca. Il flag -A indica le righe che seguono la stringa di ricerca e -B stampa l’output che appare prima della stringa di ricerca. Per esempio
$ ifconfig | grep -A 4 ens3
Questo comando visualizza la riga contenente la stringa più 4 righe di testo dopo la stringa ens nel comando ifconfig
. Output Al contrario, nell’esempio sottostante, l’uso del flag -B visualizzerà la riga contenente la stringa di ricerca più 3 righe di testo prima della stringa ether nel comando
ifconfig
. Output
$ ifconfig | grep -B 4 ether
Utilizzo di grep con REGEX – espressioni regolari
Il termine REGEX è un acronimo per REGolare EXpressione. Un REGEX è una sequenza di caratteri utilizzata per individuare un modello. Di seguito sono riportati alcuni esempi:
^ Matches characters at the beginning of a line
$ Matches characters at the end of a line
"." Matches any character
[a-z] Matches any characters between A and Z
[^ ..] Matches anything apart from what is contained in the brackets
Esempio Per stampare le righe che iniziano con un certo carattere, la sintassi è;
grep ^character file_name
Ad esempio, per visualizzare le righe che iniziano con la lettera “d” nel nostro file welcome.txt, eseguiremmo
$ grep ^d welcome.txt
Output Per visualizzare le righe che terminano con la lettera ‘x’ eseguire
$ grep x$ welcome.txt
Output
Ottenere aiuto con più opzioni Grep
Se hai bisogno di imparare di più sull’uso del comando Grep, esegui il comando qui sotto per ottenere un’anteprima delle altre bandiere o opzioni che puoi usare insieme al comando.
$ grep --help
Output di Esempio Apprezziamo il tuo tempo per aver letto questo tutorial. Sentiti libero di provare i comandi e farci sapere come è andata.
Source:
https://www.digitalocean.com/community/tutorials/grep-command-in-linux-unix