Ricerca nel sito web

Come usare il comando grep su Debian 10


Grep sta per stampa di espressioni regolari globali. È un comando utile e ampiamente utilizzato dagli ingegneri di sistema Linux durante la ricerca di una stringa o di modelli nei file normali e nel sistema.

In questo articolo dimostrerò l'utilizzo del comando grep con un gran numero di esempi. Ho testato tutti i comandi e gli esempi su una macchina Debian 10.

Prerequisito

È necessario disporre di una singola macchina Debian 10 con privilegi di root.

Installazione del comando grep su Debian 10

Per impostazione predefinita, grep è installato sulla maggior parte del sistema, inclusa Debian 10. Se non è installato, apri il terminale ed emetti il seguente comando con privilegi di root.

apt-get install grep

Quando ti viene chiesta una conferma, premi y quindi inserisci dalla tastiera. Attendi il completamento dell'installazione.

Poiché grep era già installato sul mio computer, controlla lo screenshot sopra. Controlliamo la sua versione eseguendo il seguente comando sul terminale.

grep --version

Dovrebbe anche restituire la versione insieme ad altri dettagli come mostrato di seguito.

Utilizzando il comando grep

Una volta che avremo il comando grep disponibile sulla nostra macchina, potremo giocarci.

Ricerca di un file o di una directory specifica nel tuo sistema

Quando desideri cercare o individuare un file specifico nel tuo sistema, la sintassi del comando dovrebbe essere la seguente.

ls -l | grep -i "nome file o directory"

Voglio cercare una directory di rete in /etc/. Il comando completo dovrebbe essere simile al seguente.

ls -l /etc/ | grep -i "network"

L'opzione 'i' ignora la distinzione tra maiuscole e minuscole. Pertanto, dovrebbe trattare la rete, la rete o la RETE come simili.

Di seguito è riportato l'output di esempio.

Supponiamo che io voglia cercare un file "interfaces.d" situato in /etc/network/, devi eseguire il seguente comando.

ls -l /etc/network/ | grep -i "interfaces.d"

È necessario includere la parola che si desidera trovare tra virgolette se contiene spazi. Supponiamo di cercare "demone di rete", il comando precedente dovrebbe essere simile al seguente.

ls -l /etc/rete/ | grep -i "demone delle interfacce"

Ricerca di una parola completa con grep

Potresti aver notato che grep ha restituito tutti i tipi di risultati che includono "rete", ad es. reti, networked, networking o abcnetworking, ecc. Se vuoi limitare la ricerca per includere quella parola specifica, devi utilizzare l'opzione -w come segue.

ls -l /etc/ | grep -i -w network

Di seguito è riportato l'output di esempio.

Ricerca di un testo specifico in un file

Abbiamo un caso in cui hai un file di grandi dimensioni e desideri cercare un testo specifico. La sintassi del comando dovrebbe essere la seguente.

grep - i "testochevuoicercare" "nomefileepercorso"

Supponiamo di voler cercare la parola "fox" in test.txt che si trova nella mia directory attuale. Esegui il seguente comando su un terminale.

grep -i "fox" test.txt

Di seguito è riportato l'output di esempio che restituisce solo le righe del file contenente la parola "fox".

Esecuzione di una ricerca ricorsiva (ricerca in più file)

Se desideri cercare un testo in un numero elevato di file e sottodirectory all'interno di una directory, puoi eseguire una ricerca ricorsiva utilizzando l'opzione -r.

grep -i -r "fox"

Di seguito è riportato l'output di esempio che mostra che la parola fox è presente in entrambi i file test.txt e tree.txt nella riga mostrata.

Puoi anche fornire un percorso di directory e cercherà tutti i file in quella directory e nelle sue sottodirectory.

Supponiamo di voler eseguire una ricerca ricorsiva per il testo "interfaces" in /etc/ e le sue sottodirectory. Il comando dovrebbe essere eseguito come segue.

grep -i -r interfaces /etc/

Di seguito è riportato l'output di esempio.

Ricerca di due parole diverse con un singolo comando grep

Puoi cercare due parole diverse con un singolo comando egrep (che è una variazione di grep) come segue. Supponiamo di voler cercare le parole complete fox e lazy in più file utilizzando l'opzione -r. È necessario eseguire il seguente comando sul terminale.

egrep -w -r "fox|lazy"

Di seguito è riportato l'output di esempio.

Numerare la riga che corrisponde al testo

Un'altra opzione utile è -n che numera le righe corrispondenti al testo. Di seguito è riportato l'esempio che illustra come utilizzare l'opzione -n.

grep -i -n "fox" test.txt

Di seguito è riportato l'output di esempio che numera le righe che corrispondono alla parola "volpe".

Inversione della ricerca

Questo è l'opposto di quello che abbiamo fatto sopra. Se vuoi restituire un testo che non includa la parola specificata, puoi usare l'opzione -v.

Di seguito è riportato l'esempio che dimostra l'uso dell'opzione -v.

grep -v -i "fox" test.txt

Di seguito è riportato l'output di esempio.

Tutte le opzioni di cui sopra (-n ecc.) possono essere applicate anche con l'opzione -v.

Contare le partite

Se vuoi solo contare il numero di corrispondenze rispetto a un testo specifico, puoi utilizzare l'opzione -c.

Contiamo la parola "fox" nel file test.txt situato nella directory corrente. Esegui il seguente comando sul terminale.

grep -i -c fox test.txt

Di seguito è riportato l'output di esempio dopo aver eseguito il comando precedente che mostra che la parola volpe ha trovato una corrispondenza tre volte nel file test.txt.

Visualizzazione dei nomi dei file che corrispondono al testo specifico

Se vuoi scoprire i file che contengono la tua parola specifica, puoi utilizzare l'opzione -l insieme a -r  come segue. Supponendo che tutti i file si trovino nella directory corrente e che la parola specifica che stai cercando o corrispondendo sia "fox".

grep -i -r -l fox

Di seguito è riportato l'output di esempio che mostra che la parola fox è presente all'interno di test.txt e in una sottodirectory e nel file asif.txt

Visualizzazione solo del testo corrispondente

Per impostazione predefinita, grep mostra l'intera riga che corrisponde al testo o alla parola desiderata. Se vuoi che grep ti mostri le parole corrispondenti, puoi usare l'opzione -o come segue.

grep -i -o fox test.txt

Di seguito è riportato l'output di esempio.

Visualizzazione delle righe che iniziano con una o più parole specifiche

Se vuoi recuperare tutte quelle righe che iniziano con una o più parole specifiche, puoi utilizzare l'operatore ^come segue.

Supponendo che tu voglia restituire tutte quelle righe che iniziano con "unix" e il file è log.txt situato nella directory corrente.

Esegui il seguente comando sul terminale.

grep -i "^unix" log.txt

Di seguito è riportato l'output di esempio.

Visualizzazione delle righe che terminano con le parole specifiche

Se vuoi restituire tutte quelle righe da un file che termina con le parole specifiche, puoi utilizzare l'operatore $come segue. Supponendo che la parola sia "linux" e che il file che desideri cercare sia rev.txt situato nella directory corrente.

Esegui il seguente comando sul terminale.

grep -i "linux$" rev.txt

Di seguito è riportato l'output di esempio.

Quindi questo era il mio tutorial sull'uso del comando grep. Ho dimostrato la maggior parte delle opzioni grep maggiormente utilizzate e di cui potresti aver bisogno nel tuo lavoro quotidiano. Esistono alcune varianti del comando grep incluso zgrep ecc. Puoi esplorarle da solo.

Articoli correlati: