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.
Opzione | Descrizione |
-io | Per una ricerca senza distinzione tra maiuscole e minuscole |
-R | Per cercare ricorsivamente tutti i file nella directory specificata e nelle sue sottodirectory |
-C | Per visualizzare il numero totale di volte in cui appare una stringa |
-v | Per visualizzare le linee non corrispondenti |
-w | Filtra 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.