Come usare il comando Grep in Linux

Comprensione del comando grep con esempi pratici per filtrare e visualizzare facilmente il contenuto del file

GREP sta per "Stampa globale di espressioni regolari". È un'utile utilità della riga di comando fornita da Linux, per cercare la riga di testo che corrisponde al modello fornito dall'utente.

grep prende l'input dall'utente sotto forma di stringhe o parole che l'utente desidera cercare in un particolare file. Il comando quindi controlla il file specificato dall'utente per questo modello e quindi restituisce le righe che corrispondono al modello fornito.

Fa un ottimo lavoro filtrando il contenuto di un file, rendendo così il nostro compito più facile cercare contenuti particolari su uno o più file contemporaneamente.

In questo articolo, esaminiamo il funzionamento del grep comando con alcuni esempi pratici in dettaglio.

Opzioni disponibili con grep comando

Queste sono alcune delle opzioni fondamentali che utilizzerai frequentemente con il grep comando.

OpzioneDescrizione
-ioPer una ricerca senza distinzione tra maiuscole e minuscole
-RPer cercare ricorsivamente tutti i file nella directory specificata e nelle sue sottodirectory
-CPer visualizzare il numero totale di volte in cui appare una stringa
-vPer visualizzare le linee non corrispondenti
-wFiltra per quella particolare parola usata separatamente

Usando il grep comando

grep Il comando viene solitamente utilizzato con la pipe (|) utilità. Può essere implementato con la shell pipe quando si desidera utilizzarlo con altri comandi Linux. Sebbene, grep utilizzabili anche singolarmente senza tubo (|) utilità.

Vediamo alcune delle sintassi di base del grep comando con e senza l'utilità pipe.

Lascia che ti mostri prima il file di testo di esempio che userò per illustrare il grep comando.

L'INDIA È UN PAESE BELLISSIMO DI PERSONE CHE AMANO LA PACE. l'india si regge su tre pilastri: legislativo, esecutivo e giudiziario. L'India è un bellissimo paese di persone amanti della pace. L'India si prende cura delle persone in quanto è risorsa coordinate cartesiane importanza di tutte le coordinate cartesiane. Seguono due righe vuote. uso di un carro trainato da buoi è una vista comune nel villaggio per le faccende agrarie. Questa è la fine del file di esempio.

grep usato con tubo ( | )utilità

grep Il comando può essere implementato insieme ad altri comandi Linux usando le shell pipe. Ad esempio, usando il gatto comando per visualizzare il contenuto del file ma allo stesso tempo reindirizzare l'output utilizzando il comando grep comando per visualizzare solo il contenuto che desideri vedere. Questo sarà più chiaro quando esamineremo l'esempio.

Sintassi:

[comando] | grep [stringa]

Esempio:

cat sample.txt | grep legislatura

Ecco, ho usato il gatto comando per visualizzare alcune righe del file "sample.txt". Devono essere visualizzate solo le righe che contengono la parola "legislatura" e ignorare il resto delle righe.

Produzione:

gaurav@ubuntu:~/workspace$ cat sample.txt | grep legislature india si erge su tre pilastri della legislatura, esecutivo e giudiziario. gaurav@ubuntu:~/workspace$

grep usato senza tubo ( | )utilità

grep può essere utilizzato anche direttamente come comando individuale senza utilizzare il pipe ( | ) utilità.

Sintassi:

grep [stringa_da_ricercare] [nome file]

Esempio:

grep India sample.txt

Produzione:

L'India è un bellissimo paese di persone amanti della pace. L'India si prende cura delle persone come risorsa

Così, ho usato il grep comando direttamente per filtrare le righe che contengono la stringa "India" dal file di testo "sample.txt".

Ricerca senza distinzione tra maiuscole e minuscole utilizzando grep comando

Linux è molto cauto riguardo alla distinzione tra maiuscole e minuscole quando eseguiamo i comandi sul terminale. Ciò richiede che l'utente stia attento al caso della stringa inserita nel comando.

Vediamolo attraverso un esempio.

grep pace sample.txt

In questo caso, non otterremo un output poiché non esiste una parola come "pace" nel file di esempio. Abbiamo la parola "Pace" con la "P" maiuscola. La parola è la stessa ma quando usiamo il grep comando senza alcuna opzione, cerca la corrispondenza esatta nel file, ignorando eventuali modifiche nelle lettere maiuscole.

Per evitare questa ambiguità, puoi semplicemente usare il -io opzione che dice letteralmente il grep comando "dimentica il caso in cui ho inserito la stringa e cerca semplicemente tutti i modelli corrispondenti nel file."

Sintassi:

grep -i [stringa] [nome file]

Esempio:

grep -i pace sample.txt

Produzione:

L'INDIA È UN PAESE BELLISSIMO DI PERSONE CHE AMANO LA PACE. L'India è un bellissimo paese di persone amanti della pace.

Tutte le righe corrispondenti vengono visualizzate indipendentemente dal caso in cui si trova la stringa corrispondente.

Ricerca ricorsiva usando grep comando

Il -R L'opzione cercherà tutti i file in una directory e tutte le sue sottodirectory che corrispondono al modello di stringa fornito dall'utente nel comando.

Sintassi:

grep -i -r [stringa] [percorso_file]

Esempio:

grep -i -r tomcat /home/gaurav/workspace

La stringa qui è "tomcat" e verrà cercata nell'area di lavoro della directory. Anche tutte le sottodirectory e i file nella directory "workspace" verranno scansionati in modo che corrispondano allo schema di stringa fornito.

Produzione:

./context_log.policy:// catalina.policy - Autorizzazioni dei criteri di sicurezza per Tomcat 7 ./context_log.policy:// Nota: se tomcat-juli.jar è in ${catalina.base} e non in ${catalina.home }, ./context_log.policy:// grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..} ./context_log.policy:grant codeBase "file:${catalina.home }/bin/tomcat-juli.jar" { ./context_log.policy: permesso java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server"; ./context.xml: ./catalina.properties:# - Tomcat Bootstrap JAR ./catalina.properties:# - Tomcat API JAR ./catalina.properties:# - Tomcat JAR ./catalina.properties:# - Comuni non Tomcat JAR ./catalina.properties:org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar ./catalina.properties:tomcat.util.buf.StringCache.byte.enabled=true ./catalina.properties:# tomcat.util.buf.StringCache.char.enabled=true ./catalina.properties:#tomcat.util.buf.StringCache.trainThreshold=500000 ./catalina.properties:#tomcat.util.buf.StringCache.cacheSize=5000 . /server.xml: percorso="conf/tomcat-users.xml" /> ./server.xml: 

NOTA: Durante l'utilizzo del -R opzione con il grep comando dobbiamo fornire il percorso del file e non il nome del file

Cercare parole intere solo con grep comando

Molte volte il caso è che cercherai una parola ma finirai per popolare il tuo terminale con le righe corrispondenti che contengono la tua parola corrispondente ma non come una singola parola. Potresti vedere le righe che contengono alcune parole la cui sottoparte è la stringa che hai inserito.

Confuso con questo? Non preoccuparti, è molto più facile da capire una volta ottenuto l'esempio.

Esempio:

Qui, voglio cercare una singola parola "carrello" e visualizzare tutte le righe corrispondenti a questa parola nel file "sample.txt".

grep -i carrello sample.txt

Produzione:

Coordinate cartesiane importanza di tutte le coordinate cartesiane. uso di un carro trainato da buoi è una vista comune nel villaggio per le faccende agrarie Il carro è scomparso quando il ragazzo lo ha lasciato libero.

Nell'output, puoi osservare che la parola "cartesiano" contiene anche la parola "carrello" e quindi vengono visualizzate anche le righe contenenti la parola "cartesiano" anche se non vogliamo che vengano visualizzate.

Puoi usare il -w opzione con il grep comando per risolvere questa ambiguità.

Sintassi:

grep -i -w [stringa] [nome file]

Esempio:

grep -i -w carrello sample.txt

Produzione:

uso di un carro trainato da buoi è una vista comune nel villaggio per le faccende agrarie. Il carrello è scomparso quando il ragazzo lo ha lasciato libero. 

Ora, quando hai usato il -w opzione con grep otterrai solo le righe in cui la parola "carrello" è usata nel suo insieme.

Ricerca invertita usando grep comando

grep comando può essere utilizzato anche in modo inverso. Possiamo usare il grep comando in modo opposto nascondendo le righe corrispondenti e visualizzando solo le righe in cui non viene trovata la corrispondenza. Puoi farlo usando il -v opzione con il grep comando.

Sintassi:

grep -i -v [stringa] [nome file]

Esempio:

grep -i -v risorsa campione.txt

Produzione:

L'INDIA È UN PAESE BELLISSIMO DI PERSONE CHE AMANO LA PACE. l'india si regge su tre pilastri: legislativo, esecutivo e giudiziario. L'India è un bellissimo paese di persone amanti della pace. coordinate cartesiane importanza di tutte le coordinate cartesiane. uso di un carro trainato da buoi è una vista comune nel villaggio per le faccende agrarie. Questa è la fine del file di esempio.

Nell'output vengono visualizzate tutte le altre righe tranne la riga che contiene la parola "risorsa".

Conteggio delle occorrenze della stringa corrispondente

L'uscita di grep comando è solitamente molto lungo se i dati nel file sono estesi. Più sono le partite, più lunghe sono le uscite del grep comando. Linux ti offre un'opzione in cui puoi visualizzare il numero di occorrenze della corrispondenza.

Sintassi:

grep -i -c [stringa] [nome file]

Esempio:

grep -i -c india sample.txt

Produzione:

gaurav@ubuntu:~/workspace$ grep -i -c india sample.txt 4 gaurav@ubuntu:~/workspace$

Qui, l'output è un numero che è il numero di occorrenze della parola "India" nel file sample.txt.

NOTA: ho usato il -io opzione in ogni esempio per essere al sicuro con il problema della distinzione tra maiuscole e minuscole. Nel caso in cui tu sia sicuro del caso della parola che stai cercando, puoi tranquillamente omettere il -io opzione.

Conclusione

Abbiamo imparato gli usi fondamentali del grep comando sui sistemi Linux in questo tutorial. Abbiamo anche imparato a visualizzare vari contenuti che meglio si adattano alle nostre esigenze e a non affollare il terminal con carichi di linee. grep comando sarà sicuramente un risparmio di tempo se utilizzato per la scansione di grandi set di dati.