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.