GNU/Linux >> Linux Esercitazione >  >> Linux

Come usare grep in Linux

Una delle operazioni più comunemente utilizzate nel terminale Linux è la ricerca nei file di testo e il filtraggio dell'output standard o dei flussi di errore. Linux fornisce un ottimo strumento che ci consente di risolvere facilmente questo compito:grep. In questo articolo tratteremo i casi d'uso più comuni di grep che semplificheranno sicuramente la tua routine quotidiana.

Cos'è grep

Grep sta per Global Regular Expression Print. Questa è un'utilità molto utile quando si tratta di cercare in un ampio set di file di testo (registri, ad esempio).

Grep è il comando più utile su Linux/Unix per amministratori di sistema, sviluppatori e ingegneri DevOps. Lo scopo principale di questo strumento è verificare la presenza di stringhe o pattern in un file specifico o filtrare l'output di altri comandi.

Questo modello che abbiamo menzionato sopra, è noto come un'espressione regolare.

Il comando grep stampa una riga sul terminale con la stringa se trova una corrispondenza con la query di ricerca.

Esistono molti esempi diversi di utilizzo di grep, quindi diamo un'occhiata a come e quando puoi usarlo.

Installazione di grep su Linux

Di solito, grep è installato nella maggior parte dei sistemi Linux e anche nei piccoli contenitori Docker. Ma se non lo hai installato sul tuo sistema, puoi farlo usando il seguente comando, ad esempio:

apt-get updateapt-get install -y grep

esempi di utilizzo di grep

In questa parte dell'articolo, tratteremo gli esempi più comuni di utilizzo di grep.

Filtraggio di un output di comando

Puoi usare il comando grep per cercare e stampare qualsiasi riga da qualsiasi output del comando Linux che corrisponde al modello specificato.

In questo esempio, verificheremo quali pacchetti Python 3 abbiamo nel nostro sistema Ubuntu:

dpkg -l | grep python3

In questo esempio:

  • dpkg -l stamperà tutti i pacchetti installati
  • grep filtrerà dpkg emette e stampa solo stringhe, che contengono python3 stringa

Allo stesso modo, puoi visualizzare le informazioni sul modello della CPU, ad esempio:

grep -i 'Model' /proc/cpuinfo

Ricerca di una stringa all'interno di un file

In questo esempio, il comando grep cercherà la stringa "root" nel file "/etc/passwd" e la stamperà se la stringa è stata trovata.

Di solito, utilizziamo questo comando per verificare se il sistema ha un account utente con il nome specificato (esempio root in out): 

grep root /etc/passwd

Cerca in più file

Per scoprire la stringa in più file contemporaneamente, utilizzare il comando grep e specificare i nomi dei file in un'unica riga. Puoi usare le espressioni regolari per cercare i file per maschera.

Scarichiamo Apache access.log pubblicamente accessibile:

 mkdir -p /var/log/httpd
 cd /var/log/httpd
 wget http://www.almhuette-raith.at/apache-log/access.log 

Ora, dividiamo questo file in più file di 10000 righe nel file:

Ora possiamo cercare tra i file 500 errori del server HTTP:

grep ' 500 ' xac xad

Per cercare in tutti i file all'interno della directory di lavoro corrente, usa * dopo il modello.

Nell'esempio seguente, il comando grep cercherà 500 errori del server in tutti i file:

grep ' 500 ' *

Con il -w opzione nel comando grep, puoi cercare i file contenenti un modello di parole:

grep -w 'Windows XP' *

Il comando grep è abbastanza intelligente da permetterci di effettuare ricerche indipendentemente dalla distinzione tra maiuscole e minuscole del pattern di ricerca.

Per farlo, dobbiamo usare -i come argomento.

Ecco lo stesso esempio, ma ora stiamo eseguendo il filtraggio senza distinzione tra maiuscole e minuscole:

grep -i -w 'windows xp' *

File di output contenenti pattern di ricerca

Puoi usare -l opzione per visualizzare tutti i nomi di file contenenti il ​​modello cercato:

grep -l -i -w 'windows xp' *

Conteggia le corrispondenze per file

Se vuoi conoscere il numero di volte in cui il tuo modello è stato abbinato in tutti i file, aggiungi il -c opzione:

grep -c -i -w 'windows xp' *

Numero di righe prima del pattern cercato

Per visualizzare le righe in un file prima del modello di ricerca, aggiungi -B argomento seguito dal conteggio dei numeri che vuoi recuperare dal file:

grep -B 3 -i -w 'windows xp' xaf

Numero di righe dopo il pattern cercato

Allo stesso modo, puoi usare -A argomento per specificare il conteggio delle righe da stampare dopo il modello cercato:

grep -A 3 -i -w 'windows xp' xaf

Stampa il numero di riga per la corrispondenza del modello di ricerca

Per visualizzare il numero di riga del pattern cercato trovato, puoi usare -n argomento:

grep -n -i -w 'windows xp' xaf

Corrispondenza all'inizio della stringa

Nell'esempio seguente, utilizzeremo il comando grep per trovare tutte le richieste originate dall'indirizzo IP specifico.

Tutte le righe cercate dovrebbero iniziare da 5.34.180.192 termine.

grep "^5.34.180.192" xaf

Corrispondenza alla fine della stringa

Aggiungi $ alla fine del pattern per trovare le righe che terminano con la stringa cercata:

grep "Chrome/62\" \"-\"$" xaf

Non appena la nostra stringa di ricerca contiene " simboli, li sfuggiamo con il \ .

Possiamo usare grep per cercare più pattern contemporaneamente. Aggiungi -e argomento prima di ogni modello di ricerca:

grep -e "Chrome/62\" \"-\"$" -e "15/Mar/2021:08:35:23" xaf

Qui, stiamo cercando tutte le stringhe nel file che terminano con Chrome/62" "-" E contengono data e ora specifiche 15/Mar/2021:08:35:23 .

Modifica del colore di output

Poiché l'output colorato aumenta la leggibilità, puoi cambiarlo nel tuo colore preferito impostando GREP_COLOR variabile d'ambiente:

GREP_COLOR='1;35' grep --color=always 'admin' /etc/passwd

Puoi ottenere maggiori informazioni sulla variabile GREP_COLOR nella documentazione ufficiale di grep.

Riepilogo

Il comando grep è estremamente utile quando si tratta di filtrare il contenuto dei file di testo o dei risultati di output dei comandi. In questo articolo abbiamo trattato i comandi grep più comunemente usati, che semplificheranno la tua esperienza con la shell.

Speriamo che questo articolo ti sia stato utile. Se è così, per favore, aiutaci a diffonderlo nel mondo.


Linux
  1. Come usare il comando Linux grep

  2. Come usare il comando grep in Linux/UNIX

  3. Come usare il comando Disown in Linux

  4. Come usare il comando Su in Linux

  5. Come utilizzare il comando dello schermo di Linux

Come usare il comando grep su Debian 10

Come utilizzare il comando sysctl in Linux

Come utilizzare il comando di arresto di Linux

Come utilizzare il comando Mkdir su Linux

Come usare il comando jobs in Linux

Uso del comando grep in Linux