In Linux e Unix Systems Grep, abbreviazione di "stampa di espressioni regolari globali", è un comando utilizzato per cercare e abbinare i file di testo contenuti nelle espressioni regolari. Inoltre, il comando viene preinstallato in ogni distribuzione Linux. In questa guida, esamineremo l'utilizzo del comando grep comune con alcuni esempi.
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 aggiungi alcuni contenuti 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.
Grande! Ora siamo pronti per 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 O
$ filename grep "string" Esempio :
$ grep "Linux" welcome.txt Risultato

Come puoi vedere, grep non solo ha cercato e abbinato la stringa "Linux", ma ha anche stampato le righe in cui appare la stringa.
Se il file si trova in un percorso file diverso, assicurati di specificare il percorso del file come mostrato di seguito
$ grep "string" /path/to/file Colorazione dei risultati Grep utilizzando l'opzione –color
Se stai lavorando su un sistema che non mostra la stringa o il modello di ricerca in un colore diverso dal resto del testo, usa il --color per far risaltare i tuoi risultati.
Esempio
$ grep --color "free and opensource" welcome.txt Risultato

Ricerca ricorsiva di una stringa in tutte le directory
Se desideri cercare una stringa nella directory corrente e in tutte le altre sottodirectory, esegui la ricerca utilizzando il - r contrassegna come mostrato
$ grep -r "string-name" * Ad esempio
$ grep -r "linux" * Risultato

Ignora la distinzione tra maiuscole e minuscole
Nell'esempio sopra, i nostri risultati di ricerca ci hanno dato ciò che volevamo perché la stringa "Linux" è stata specificata in maiuscolo ed esiste anche nel file in maiuscolo. Ora proviamo a cercare la stringa in minuscolo.
$ grep "linux" file name
Niente dall'output, giusto? Questo perché grepping non è stato in grado di trovare e abbinare la stringa "linux" poiché la prima lettera è minuscola. Per ignorare la distinzione tra maiuscole e minuscole, usa -i contrassegnare ed eseguire il comando seguente
$ grep -i "linux" welcome.txt Risultato

Fantastico no? Il - i viene normalmente utilizzato per visualizzare le stringhe indipendentemente dalla distinzione tra maiuscole e minuscole.
Conta le righe in cui le stringhe sono abbinate con l'opzione -c
Per contare il numero totale di righe in cui appare o risiede lo schema di stringa, esegui il comando seguente
$ grep -c "Linux" welcome.txt Risultato

Utilizzo di Grep per invertire l'output
Per invertire l'output di Grep , usa -v bandiera. Il -v opzione indica a grep di stampare tutte le righe che non contengono o corrispondono all'espressione.
L'opzione –v dice a grep di invertire il suo output, il che significa che invece di stampare le righe corrispondenti, fai il contrario e stampa tutte le righe che non corrispondono all'espressione. Tornando al nostro file, mostriamo i numeri di riga come mostrato.
Premi ESC sull'editor Vim, digita i due punti completi seguiti da
set nu Quindi, premi Invio
Risultato

Ora, per visualizzare le righe che non contengono la stringa "Linux" esegui
$ grep -v "Linux" welcome.txt Risultato

Come puoi vedere, grep ha visualizzato le righe che non contengono il modello di ricerca.
Numera le righe che contengono il modello di ricerca con l'opzione -n
Per numerare le righe in cui lo schema di stringa è abbinato, usa il -n opzione come mostrato
$ grep -n "Linux" welcome.txt Risultato

Cerca la parola con corrispondenza esatta usando l'opzione -w
Passando quindi -w flag cercherà la riga contenente la parola esatta corrispondente come mostrato
$ grep -w "opensource" welcome.txt Risultato

Tuttavia, se ci provi
$ grep -w "open" welcome.txt NESSUN risultato verrà restituito perché non stiamo cercando uno schema ma una parola esatta!
Uso di pipe con grep
Il comando grep può essere utilizzato insieme alle pipe per ottenere un output distinto.
Ad esempio, se vuoi sapere se un determinato pacchetto è installato nel sistema Ubuntu esegui
$ dpkg -L | grep "package-name"
Ad esempio, per scoprire se OpenSSH è stato installato nella tua pipe di sistema, dpkg -l comando per grep come mostrato
$ dpkg -L | grep -i "openssh" Risultato

Visualizzazione del numero di righe prima o dopo un modello di ricerca Usando le pipe
Puoi usare la -A o -B per visualizzare il numero di righe che precedono o seguono la stringa di ricerca. La -A flag indica le righe che seguono la stringa di ricerca e -B stampa l'output che appare prima della stringa di ricerca.
Ad esempio
$ ifconfig | grep -A 4 ens3
Questo comando visualizza la riga contenente la stringa più 4 righe di testo dopo ens stringa in ifconfig comando.
Risultato

Al contrario, nell'esempio seguente, l'uso del flag -B mostrerà la riga contenente la stringa di ricerca più 3 righe di testo prima dell'etere stringa in ifconfig comando.
Risultato
$ ifconfig | grep -B 4 ether

Utilizzo di grep con espressioni regolari (REGEX)
Il termine REGEX è l'acronimo di REG ul EX pressione. Un REGEX è una sequenza di caratteri che viene utilizzata per abbinare 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 righe che iniziano con un determinato carattere, la sintassi è;
grep ^character file_name Ad esempio, per visualizzare le righe che iniziano con la lettera "d" nel nostro file welcome.txt, eseguiremo
$ grep ^d welcome.txt Risultato

Per visualizzare le righe che terminano con la lettera "x" corri
$ grep x$ welcome.txt Risultato

Ricevere aiuto con più opzioni Grep
Se hai bisogno di ulteriori informazioni sull'utilizzo del comando Grep, esegui il comando seguente per avere un'anteprima di altri flag o opzioni che potresti utilizzare insieme al comando.
$ grep --help Risultato campione

Apprezziamo il tuo tempo per passare attraverso questo tutorial. Sentiti libero di provare i comandi e facci sapere come è andata.