GNU/Linux >> Linux Esercitazione >  >> Debian

Come usare il comando grep su Debian 10

Grep sta per global regular expression print. È un comando utile e ampiamente utilizzato dagli ingegneri di sistema Linux durante la ricerca di una stringa o di modelli rispetto a file regolari e nel sistema.

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

Prerequisito

Devi avere 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, incluso Debian 10. Se non è installato, apri il terminale ed emetti il ​​seguente comando con privilegi di root.

apt-get install grep

Quando ti viene richiesta una conferma, premi y e poi accedi dalla tastiera. Attendi il completamento dell'installazione.

Poiché grep era già installato sulla mia macchina, controlla lo screenshot sopra. Verifichiamo la sua versione eseguendo il seguente comando sul terminale.

grep --version

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

Utilizzo del comando grep

Una volta che abbiamo il comando grep disponibile sulla nostra macchina, possiamo giocarci.

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

Quando vuoi 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 di voler cercare un file "interfaces.d" che si trova in /etc/network/, devi eseguire il comando seguente.

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

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

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

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, in rete, in rete o abcnetworking, ecc. Se vuoi limitare la tua ricerca per includere quella parola specifica, devi usare 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 vuoi cercare un testo specifico. La sintassi del comando dovrebbe essere la seguente.

grep – i "textyouwanttosearch" "filenameandpath"

Supponiamo di voler cercare la parola "fox" in test.txt che si trova all'interno della mia directory corrente. Esegui il seguente comando su un terminale.

grep -i "fox" test.txt

Di seguito è riportato l'output di esempio che restituisce solo quelle righe del file contenenti la parola “fox”.

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

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

grep -i -r "fox"

Di seguito è riportato l'output di esempio che mostra che la parola fox è presente nei 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 le "interfacce" di testo in /etc/ e le sue sottodirectory. Il comando deve essere eseguito come segue.

grep -i -r interfaces /etc/

Di seguito è riportato l'output di esempio.

Ricerca di due parole diverse con un unico comando grep

Puoi cercare due parole diverse con un singolo comando egrep (che è una variazione di grep) come segue. Supponiamo di voler cercare una parola completa volpe e pigro in più file usando l'opzione -r. Devi eseguire il seguente comando sul terminale.

egrep -w -r "fox|lazy"

Di seguito è riportato l'output di esempio.

Numerazione della riga che corrisponde al testo

Un'altra opzione utile è -n che numera le righe che corrispondono 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 ciò che abbiamo fatto sopra. Se vuoi restituire un testo che non include la parola specificata, puoi utilizzare l'opzione -v.

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

grep -v -i "fox" test.txt

Di seguito è riportato l'output di esempio.

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

Conteggio delle partite

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

Contiamo la parola "volpe" in test.txt che si trova all'interno della 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 fox ha trovato una corrispondenza tre volte nel file test.txt.

Visualizzazione dei nomi di 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 che stai cercando sia "volpe".

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 in un file asif.txt

Visualizzazione solo del testo abbinato

Per impostazione predefinita, grep mostra l'intera riga che corrisponde al testo o alla parola desiderati. Se vuoi che grep ti mostri le parole abbinate, 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 usare l'operatore ^ come segue.

Supponendo che tu voglia restituire tutte quelle righe che iniziano con "unix" e il file è log.txt situato all'interno della tua 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 la/e parola/e specifica/e

Se vuoi restituire tutte quelle righe da un file che termina con le parole specifiche, puoi usare l'operatore $ come segue. Supponendo che la parola sia "linux" e il file che vuoi cercare sia rev.txt che si trova all'interno della tua directory corrente.

Esegui il seguente comando sul terminale.

grep -i "linux$" rev.txt

Di seguito è riportato l'output di esempio.

Conclusione

Quindi questo era il mio tutorial sull'uso del comando grep. Ho dimostrato la maggior parte delle opzioni di grep che vengono utilizzate principalmente e che potresti richiedere nel tuo lavoro quotidiano. Ci sono alcune varianti del comando grep incluso zgrep ecc. Puoi esplorarle da solo.


Debian
  1. Come usare il comando Linux grep

  2. Come usare il comando grep in Linux/UNIX

  3. Come utilizzare il comando Grep per trovare testo nei file

  4. Come usare il comando Su in Linux

  5. Come installare Java 17 in Debian 11

Come usare il comando PS

Come usare il comando TOP

Come usare grep in Linux

Come installare e utilizzare MongoDB su Debian 11

Come installare Tomcat 9 su Debian 11

Come installare Apache su Debian 11