GNU/Linux >> Linux Esercitazione >  >> Linux

Come fare buon uso del comando 'grep'

I sistemi Linux e UNIX sono dotati di un comando shell noto come "grep". Questo cerca semplicemente un testo o un modello specificato in un file o in un'intera directory. L'uso più comune è per cercare rapidamente in un file le occorrenze di un modello, che può essere in testo normale o sotto forma di un'espressione regolare.

Qui, i modelli utilizzati saranno testo semplice anziché espressioni regolari. Questo articolo ti mostrerà come usare grep durante la ricerca nei file di testo di uno o più pattern. Come eliminare le righe contenenti determinati pattern dalla ricerca e come eseguire più comandi grep utilizzando pipe per un filtraggio più avanzato.

​Panoramica di base di 'grep'

​Guarda l'output del terminale per questi comandi:

/etc$ grep unix group
/etc$ grep -n unix group
/etc$ grep -w unix group
/etc$ grep -r -s unix . 

In questa schermata, utilizzo grep per cercare la parola "unix" nel file /etc/group. Di conseguenza, restituisce tutte le occorrenze di unix_allsort (nome utente per questo computer). Il secondo comando ha fatto lo stesso, ma con il parametro -n mostra su quale riga è stato trovato il pattern in un file.

Il terzo comando è leggermente diverso con il parametro '-w', che dice a grep di trovare una corrispondenza con un'intera parola piuttosto che un semplice pezzo di testo. Poiché il file di gruppo non aveva "unix" come parola intera, non c'era output.

Il quarto comando è diverso. Il primo parametro, '-r', dice a grep di cercare in una directory in modo ricorsivo. La directory, in questo caso, è quella corrente (/etc), indicata da '.'. Il parametro successivo, '-s', dice a grep di evitare di segnalare eventuali errori, come gli errori "Autorizzazione negata", all'output, in modo da non inquinare l'output con errori. Quindi il quarto comando grep elenca tutte le occorrenze di "unix" in tutti i file in /etc e nelle sue sottodirectory, dove qualsiasi errore viene semplicemente ignorato.

Modelli multipli

​Per cercare più pattern, è sufficiente creare un file di testo contenente un elenco di pattern, uno per riga, da cercare in un file o in una directory e utilizzare il parametro -f per caricare il file contenente i pattern.$ grep -f ~/groups.txt /etc/group

Questo file contiene questi modelli da cercare:

unix_allsort
video
sudo

Tutte le righe contenenti almeno uno di questi modelli verranno visualizzate sull'output del terminale.

Reindirizzamento dell'output

Ricorda che l'uso di grep su un file di grandi dimensioni o anche su più file può produrre molto output. Quindi una buona cosa da fare è reindirizzare l'output al comando "less" in modo da poter scorrere l'output nella sua interezza. $ grep -r -n -f filter.txt risorse/js | less ​Oppure reindirizza il suo output a un file di testo da visualizzare in seguito. $ grep -r -n -f filter.txt resources/js> ~/result.txt  

​Qualcosa di un po' più avanzato

C'è un trucco che a volte uso con le pipe per cercare modelli e filtrare anche l'output indesiderato. Un esempio è stato il pipe dell'output di grep da visualizzare in "less".

Due esempi che utilizzano il log del kernel (/var/log/kern.log). Dai un'occhiata a questa immagine:

Quello che ho fatto è stato usare grep per elencare tutte le righe contenenti l'intera parola "pci" (usare il parametro -w per abbinare solo parole intere), reindirizzare l'output a un altro comando grep per filtrare i modelli che non volevo da vedere nell'output.

I pattern che stavo filtrando erano "ohci-pci" e "ehci-pci".

In quell'immagine, prima ho filtrato le righe che contenevano schemi che non volevo, quindi ho cercato nell'output quello che volevo. Ho anche aggiunto un altro modello per filtrare, "pci=nocrs". Ci sono più funzionalità in grep rispetto a quelle descritte qui, quindi se prevedi di utilizzare grep regolarmente, prenditi il ​​tempo per ricercare cosa può fare e come migliorarlo usalo. Inoltre, controlla pdfgrep per la ricerca nei file PDF.

Conclusione

Uno strumento come grep è infatti estremamente utile, per non dire indispensabile, per cercare tra una moltitudine di file di testo, script e soprattutto log per pattern specifici con notevole facilità. Puoi cercare uno o più pattern in un singolo file o in più file, oppure usarli per filtrare le righe da quei file che contengono quei pattern.

Puoi anche usare pipe per più complicati ricerche e filtri usando grep. Vale la pena dedicare del tempo a saperne di più su questo eccellente comando, in particolare su alcune delle sue funzionalità avanzate.


Linux
  1. Come usare il comando Linux grep

  2. Come utilizzare Telnet su Windows

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

  4. Come usare il comando Su in Linux

  5. Come fare in modo che il comando grep restituisca l'intera riga corrispondente

Come usare il comando grep su Debian 10

Come utilizzare il comando sysctl in Linux

COME USARE IL COMANDO TAIL

Come usare il comando PS

Come usare il comando TOP

Come usare grep in Linux