GNU/Linux >> Linux Esercitazione >  >> Linux

50 Comando grep produttivo e pratico per gli appassionati di Linux

Lo strumento grep in Linux e altri sistemi simili a Unix è uno dei più potenti strumenti da riga di comando mai sviluppati. Risale al comando ed g/re/p ed è creato dal leggendario Ken Thompson. Se sei un utente Linux esperto, conoscerai l'importanza delle espressioni regolari nell'elaborazione dei file. Tuttavia, molti utenti iniziali semplicemente non ne hanno idea. Spesso vediamo gli utenti sentirsi a disagio nell'usare tali tecniche. Tuttavia, la maggior parte dei comandi grep non sono così complessi. Puoi facilmente padroneggiare grep dandogli del tempo. Se vuoi diventare un guru di Linux, ti consigliamo di utilizzare questo strumento nell'informatica di tutti i giorni.

Comandi grep essenziali per utenti Linux moderni

Una delle cose più belle del comando Linux grep è che puoi usarlo con ogni genere di cose. Puoi grep per i modelli direttamente nei file o dal tuo output standard. Consente agli utenti di reindirizzare l'output di altri comandi a grep e individuare informazioni specifiche. I seguenti comandi delineeranno 50 di questi comandi.

File demo per illustrare i comandi grep di Linux

Poiché l'utilità grep di Linux funziona sui file, abbiamo delineato alcuni file che puoi utilizzare per esercitarti. La maggior parte delle distribuzioni Linux dovrebbe contenere alcuni file di dizionario nella directory /usr/share/dict. Abbiamo utilizzato il file inglese americano trovato qui per alcuni dei nostri scopi dimostrativi. Abbiamo anche creato un semplice file di testo contenente quanto segue.

this is a sample file
it contains a collection

of lines to demonstrate
various Linux grep commands

L'abbiamo chiamato test.txt e sono stati usati per molti esempi di grep. Puoi copiare il testo da qui e usare lo stesso nome file per esercitarti. Inoltre, abbiamo anche sfruttato il file /etc/passwd.

Esempi di base di grep

Poiché il comando grep consente agli utenti di estrarre informazioni utilizzando una pletora di combinazioni, gli utenti iniziali sono spesso confusi con il loro utilizzo. Dimostriamo alcuni esempi di grep di base per aiutarti a familiarizzare con questo strumento. Ti aiuterà a imparare comandi più avanzati in futuro.

1. Individua le informazioni in un unico file

Uno degli usi di base di grep in Linux è individuare le righe contenenti informazioni specifiche dai file. Inserisci semplicemente il modello seguito dal nome del file dopo grep, come mostrato di seguito.

- -
$ grep root /etc/passwd
$ grep $USER /etc/passwd

Il primo esempio mostrerà tutte le righe contenenti root nel file /etc/passwd. Il secondo comando mostrerà tutte queste righe che contengono il tuo nome utente.

2. Individua le informazioni in più file

È possibile utilizzare grep per stampare righe contenenti motivi specifici da più file contemporaneamente. Fornisci semplicemente tutti i nomi di file separati da spazi bianchi dopo il modello. Abbiamo copiato test.txt e creato un altro file contenente le stesse righe ma denominato test1.txt .

$ cp test.txt test1.txt
$ grep file test.txt test1.txt

Ora grep stamperà tutte le righe contenenti file da entrambi i file.

3. Stampa solo porzione abbinata

Per impostazione predefinita, grep visualizzerà l'intera riga contenente il pattern. Puoi sopprimere questo output e dire a grep di visualizzare solo la parte corrispondente. Quindi, grep produrrà solo i modelli specificati, se esiste.

$ grep -o $USER /etc/passwd
$ grep --only-matching $USER /etc/passwd

Questo comando produrrà il valore di $USER tutte le volte che grep lo incontra. Se non viene trovata alcuna corrispondenza, l'output sarà vuoto e grep verrà terminato.

4. Ignora corrispondenza tra maiuscole e minuscole

Per impostazione predefinita, grep cercherà il modello specificato facendo distinzione tra maiuscole e minuscole. A volte l'utente potrebbe non essere sicuro del caso del modello. Puoi dire a grep di ignorare il caso del modello in questi casi, come mostrato di seguito.

$ grep -i $USER /etc/passwd
$ grep --ignore-case $USER /etc/passwd

$ grep -y $USER /etc/passwd

Questo restituisce una riga aggiuntiva di output nel mio terminale. Dovrebbe essere lo stesso anche nella tua macchina. L'ultimo comando è obsoleto, quindi evita di usarlo.

5. Inverti i pattern grep corrispondenti

L'utilità grep consente agli utenti di invertire la corrispondenza. Significa che grep stamperà tutte le righe che non contengono il modello dato. Dai un'occhiata al comando seguente per una rapida visualizzazione.

$ grep -v file test.txt
$ grep --invert-match file test.txt

I comandi precedenti sono equivalenti e stampano solo le righe che non contengono il file.

6. Abbina solo parole intere

L'utilità grep stampa qualsiasi riga contenente il modello. Quindi stamperà anche righe che hanno lo schema all'interno di parole o frasi arbitrarie. Spesso vorrai scartare questi valori. Puoi farlo facilmente usando l'opzione -w, come mostrato di seguito.

$ grep hello /usr/share/dict/american-english
$ grep -w hello /usr/share/dict/american-english

Se li esegui uno dopo l'altro, vedrai la differenza. Nel mio sistema, il primo comando restituisce 5 righe mentre il secondo comando solo due.

7. Conta il numero di corrispondenze

Spesso potresti semplicemente volere il numero di corrispondenze trovate usando uno schema. Il -c opzione è molto utile in tali situazioni. Quando viene utilizzato, grep restituisce il numero di corrispondenze invece di stampare le righe. Abbiamo aggiunto questo flag ai comandi precedenti per aiutarti a visualizzare come funziona.

$ grep -c hello /usr/share/dict/american-english
$ grep -c -w hello /usr/share/dict/american-english

I comandi restituiscono rispettivamente 5 e 2.

8. Visualizza il numero di riga

Puoi indicare a grep di visualizzare i numeri di riga in cui è stata trovata una corrispondenza. Utilizza un indice basato su 1 in cui la prima riga del file è la riga numero 1 e la decima riga è la riga numero 10. Dai un'occhiata ai comandi seguenti per capire come funziona.

$ grep -n -w cat /usr/share/dict/american-english
$ grep --line-number -w cat /usr/share/dict/american-english

Entrambi i comandi precedenti stampano le righe che contengono la parola cat nel dizionario inglese-americano.

9. Elimina i prefissi dei nomi di file

Se esegui di nuovo gli esempi del secondo comando, noterai che grep antepone all'output i nomi dei file. Spesso potresti voler ignorarli o ometterli del tutto. I seguenti comandi Linux grep te lo illustreranno.

$ grep -h file test.txt test1.txt
$ grep --no-filename file test.txt test1.txt

Entrambi i comandi precedenti sono equivalenti, quindi puoi scegliere quello che vuoi. Restituiranno solo le righe con il modello abbinato, non i nomi dei file.

10. Visualizza solo i prefissi dei nomi file

D'altra parte, a volte potresti volere solo i nomi di file che contengono alcuni pattern. Puoi usare -l opzione per questo. Il formato lungo di questa opzione è –file-con-corrispondenze .

$ grep -l cat /usr/share/dict/*-english
$ grep --files-with-matches cat /usr/share/dict/*-english

Entrambi i comandi precedenti stampano i nomi dei file che contengono il modello cat. Mostra i dizionari inglese-americano e inglese-britannico come output di grep nel mio terminale.

11. Leggi i file in modo ricorsivo

Puoi dire a grep di leggere tutti i file in una directory in modo ricorsivo usando -r o –opzione ricorsiva . Questo stamperà tutte le righe che contengono la corrispondenza e le prefiggerà con i nomi dei file in cui sono state trovate.

$ grep -r -w cat /usr/share/dict

Questo comando produrrà tutti i file che contengono la parola cat insieme ai loro nomi di file. Stiamo usando la posizione /usr/share/dict poiché contiene già più file di dizionario. La -R l'opzione può essere utilizzata per consentire a grep di attraversare i collegamenti simbolici.

12. Visualizza le corrispondenze con l'intero pattern

Puoi anche indicare a grep di visualizzare solo quelle corrispondenze che contengono la corrispondenza esatta nell'intera riga. Ad esempio, il comando seguente genererà righe che contengono solo la parola cat.

$ grep -r -x cat /usr/share/dict/
$ grep -r --line-regexp cat /usr/share/dict/

Restituiscono semplicemente le tre righe che contengono solo gatto nei miei dizionari. Il mio Ubuntu 19.10 ha tre file nella directory /dict contenenti la parola cat in una singola riga.

Espressioni regolari nel comando grep di Linux

Una delle caratteristiche più interessanti di grep è la sua capacità di lavorare con espressioni regolari complesse. Abbiamo visto solo alcuni esempi di base di grep che illustrano molte delle sue opzioni. Tuttavia, la capacità di elaborare file basati su espressioni regolari è molto più impegnativa. Poiché le espressioni regolari richiedono uno studio tecnico approfondito, continueremo con esempi semplici.

13. Seleziona Partite all'inizio

Puoi usare grep per specificare una corrispondenza solo all'inizio di una riga. Questo è chiamato ancorare il modello. Dovrai utilizzare il punto di inserimento '^' operatore a tale scopo.

$ grep "^cat" /usr/share/dict/american-english

Il comando precedente stamperà tutte le righe nel dizionario americano-inglese di Linux che iniziano con cat. Non abbiamo usato le virgolette per specificare i nostri schemi fino a questa parte della nostra guida. Tuttavia, li useremo ora e ti consigliamo di usarli anche tu.

14. Seleziona Partite alla fine

Analogamente al comando precedente, puoi anche ancorare il tuo modello per abbinare le linee che contengono il modello alla fine. Dai un'occhiata al comando seguente per capire come funziona in Linux grep.

$ grep "fish$" /usr/share/dict/american-english

Questo comando stamperà tutte le linee che finiscono in fish. Nota come in questo caso abbiamo utilizzato il simbolo $ alla fine del nostro modello.

15. Abbina un singolo carattere

L'utilità Unix grep consente agli utenti di abbinare qualsiasi singolo carattere come parte del modello. Il punto '.' operatore viene utilizzato per questo scopo. Dai un'occhiata agli esempi seguenti per una migliore comprensione.

$ grep -x "c.t" /usr/share/dict/american-english

Questo comando stamperà tutte le righe contenenti tre parole di caratteri che iniziano con c e terminano con t. Se ometti -x opzione, l'output aumenterà molto poiché grep mostrerà tutte le righe che hanno qualsiasi combinazione di questi caratteri. Puoi usare il doppio .. per specificare due caratteri casuali e simili.

16. Abbina da un set di caratteri

Puoi anche scegliere facilmente tra una serie di caratteri usando le parentesi. Dice a grep di selezionare i personaggi in base ad alcuni criteri. Di solito utilizzerai espressioni regolari per specificare questi criteri.

$ grep "c[aeiou]t" /usr/share/dict/american-english 
$ grep -x "m[aeiou]n" /usr/share/dict/american-english

Il primo esempio stamperà tutte le righe nel dizionario inglese-americano che contengono il modello c seguito da una singola vocale e il carattere t. Il prossimo esempio stamperà tutte le parole esatte che contengono m seguite da una vocale e poi n.

17. Abbina da una gamma di caratteri

I seguenti comandi dimostreranno come puoi abbinare da un intervallo di caratteri usando grep. Prova i comandi da solo per vedere come funzionano le cose.

$ grep "^[A-Z]" /usr/share/dict/american-english
$ grep "[A-Z]$" /usr/share/dict/american-english

Il primo esempio stamperà tutte le righe che iniziano con una lettera maiuscola. Il secondo comando mostra solo le righe che terminano con una lettera maiuscola.

18. Ometti i caratteri nei modelli

A volte potresti voler cercare modelli che non contengono un carattere specifico. Ti mostreremo come farlo usando grep nel prossimo esempio.

$ grep -w "[^c]at$" /usr/share/dict/american-english
$ grep -w "[^c][aeiou]t" /usr/share/dict/american-english

Il primo comando mostra tutte le parole che terminano con eccetto cat. Il [^c] dice a grep di omettere il carattere c dalla sua ricerca. Il secondo esempio dice a grep di visualizzare tutte le parole che terminano con una vocale seguita da t e non contengono c.

19. Raggruppa i caratteri all'interno di Pattern

Il [] consente solo di specificare un singolo set di caratteri. Sebbene tu possa utilizzare più insiemi di parentesi per specificare caratteri aggiuntivi, non è adatto se sai già a quali gruppi di caratteri sei interessato. Per fortuna, puoi usare () per raggruppare più caratteri nei tuoi schemi.

$ grep -E "(copy)" /usr/share/dict/american-english
$ egrep "(copy)" /usr/share/dict/american-english

Il primo comando restituisce tutte le righe che contengono la copia del gruppo di caratteri. Il -E è richiesta la bandiera. Puoi usare il secondo comando egrep se vuoi omettere questo flag. È semplicemente un front-end esteso per grep.

20. Specifica i caratteri facoltativi in ​​Pattern

L'utilità grep consente inoltre agli utenti di specificare caratteri facoltativi per i propri modelli. Dovrai utilizzare “?” simbolo per questo. Tutto ciò che precede quel carattere sarà facoltativo nel tuo schema.

$ grep -E "(commu)?nist" /usr/share/dict/american-english

Questo comando stamperà la parola comunista accanto a tutte le righe del dizionario che contengono nist in esse. Guarda come la -E l'opzione è usata qui. Consente a grep di eseguire corrispondenze di modelli più complesse o estese.

21. Specifica le ripetizioni nel modello

Puoi specificare quante volte un pattern deve essere abbinato per determinati comandi grep. I seguenti comandi mostrano come selezionare il numero di caratteri da una classe per i pattern grep.

$ grep -E "[aeiou]{3}" /usr/share/dict/american-english
$ grep -E "c[aeiou]{2}t" /usr/share/dict/american-english

Il primo esempio stamperà tutte le righe che contengono tre vocali mentre, d'altra parte, l'ultimo esempio stampa tutte le righe contenenti c seguite da 2 vocali poi t.

22. Specifica una o più ripetizioni

Puoi anche utilizzare il "+" operatore incluso nel set di funzionalità estese di grep per specificare una corrispondenza una o più volte. Dai un'occhiata ai seguenti comandi per vedere come funziona nel comando Linux grep.

$ egrep -c "[aeiou]+" /usr/share/dict/american-english
$ egrep -c "[aeiou]{3}" /usr/share/dict/american-english

Il primo comando stampa il numero di volte in cui grep incontra una o più vocali consecutive. E il secondo comando mostra quante righe contengono tre vocali consecutive. Dovrebbe esserci un grande margine di differenza.

23. Specifica il limite inferiore per le ripetizioni

È possibile selezionare sia il limite superiore che il limite inferiore per il numero di ripetizioni della partita. I prossimi esempi mostrano come selezionare i limiti inferiori in azione.

$ egrep "[aeiou]{3,}" /usr/share/dict/american-english

Abbiamo usato egrep invece di grep -E per il comando precedente. Seleziona tutte le righe che contengono 3 o più vocali consecutive.

24. Specifica il limite superiore per le ripetizioni

Come per i limiti inferiori, puoi anche dire a grep quante volte abbinare al massimo determinati caratteri. L'esempio seguente corrisponde a tutte le righe del dizionario inglese-americano che contiene fino a 3 vocali.

$ egrep "[aeiou]{,3}" /usr/share/dict/american-english

Raccomandiamo agli utenti di utilizzare egrep per queste funzionalità estese poiché al giorno d'oggi è un po' più veloce e più una convenzione. Nota il posizionamento della virgola ',' simbolo nei due comandi sopra citati.

25. Specifica il limite superiore e inferiore

L'utilità grep consente inoltre agli utenti di selezionare contemporaneamente sia il limite superiore che il limite inferiore per le ripetizioni delle partite. Il comando seguente dice a grep di abbinare tutte le parole che contengono un minimo di due e un massimo di quattro vocali consecutive.

$ egrep "[aeiou]{2,4}" /usr/share/dict/american-english

In questo modo puoi specificare contemporaneamente i limiti superiore e inferiore.

26. Seleziona Tutti i caratteri

Puoi utilizzare il carattere jolly '*' per selezionare tutte le zero o più occorrenze di una classe di caratteri nei modelli grep. Dai un'occhiata al prossimo esempio per capire come funziona.

$ egrep "collect*" test.txt 
$ egrep "c[aeiou]*t /usr/share/dict/american-english

Il primo esempio stampa la raccolta di parole poiché è l'unica parola che corrisponde a "raccogli" una o più volte nel test.txt file. L'ultimo esempio corrisponde a tutte le righe contenenti c seguito da un numero qualsiasi di vocali, quindi t nel dizionario americano-inglese di Linux.

27. Espressioni regolari alternative

L'utilità grep consente agli utenti di specificare modelli alternati. Puoi usare “|” carattere per istruire grep a selezionare uno dei due pattern. Questo carattere è noto come operatore infisso nella terminologia POSIX. Dai un'occhiata all'esempio seguente per comprenderne l'effetto.

$ egrep "[AEIOU]{2}|[aeiou]{2}" /usr/share/dict/american-english

Questo comando dice a grep di abbinare tutte le righe che contengono 2 vocali maiuscole consecutive o vocali piccole.

28. Seleziona Pattern per la corrispondenza dei caratteri alfanumerici

I modelli alfanumerici contengono sia cifre che lettere. Gli esempi seguenti mostrano come selezionare tutte le righe che contengono caratteri alfanumerici utilizzando il comando grep.

$ egrep "[0-9A-Za-z]{3}" /usr/share/dict/american-english
$ egrep "[[:alnum:]]{3}" /usr/share/dict/american-english

Entrambi i comandi precedenti fanno la stessa cosa. Stiamo dicendo a grep di abbinare tutte le righe contenenti tre combinazioni di caratteri consecutive di 0-9, A-Z e a-z. Tuttavia, il secondo esempio ci evita di scrivere noi stessi l'identificatore di pattern. Questa è chiamata espressione speciale e grep ne offre diversi.

29. Esci da caratteri speciali

Finora abbiamo utilizzato molti caratteri speciali come "$", "^" e "|" per la definizione di espressioni regolari estese. Ma cosa succede se hai bisogno di abbinare uno di quei caratteri all'interno del tuo schema. Fortunatamente, gli sviluppatori di grep ci hanno già pensato e permettono di sfuggire a questi caratteri speciali usando la barra rovesciata “\” .

$ egrep "\-" /etc/passwd

Il comando precedente corrisponde a tutte le righe di /etc/passwd file contro il trattino “-“ carattere e li stampa. Puoi eseguire l'escape di qualsiasi altro carattere speciale utilizzando una barra rovesciata in questo modo.

30. Ripeti i modelli grep

Hai già utilizzato “*” jolly per selezionare le stringhe di caratteri nei modelli. Il comando successivo mostra come stampare tutte le righe che iniziano con parentesi e contengono solo lettere e singoli spazi bianchi. Useremo "*" per farlo.

$ egrep "([A-Za-z ]*)" test.txt

Ora aggiungi alcune righe racchiuse tra parentesi all'interno del tuo file demo test.txt ed esegui questo comando. Dovresti già imparare a usare questo comando.

Comandi Linux grep nell'informatica quotidiana

Una delle cose migliori di grep è la sua applicabilità universale. È possibile utilizzare questo comando per filtrare le informazioni essenziali durante l'esecuzione di importanti comandi del terminale Linux. Sebbene la sezione seguente ti fornisca una rapida occhiata ad alcuni di essi, puoi applicare i principi fondamentali ovunque.

31. Visualizza tutte le sottodirectory

Il comando seguente illustra come possiamo usare grep per abbinare tutte le cartelle all'interno di una directory. Stiamo usando il comando ls -l per visualizzare il contenuto della directory nell'output standard e tagliare le righe corrispondenti con grep.

$ ls -l ~ | grep "drw"

Poiché tutte le directory in Linux contengono il modello drw all'inizio, lo usiamo come modello per grep.

32. Visualizza tutti i file Mp3

Il comando seguente mostra come usare grep per localizzare i file mp3 nella tua macchina Linux. Useremo di nuovo il comando ls qui.

$ ls /path/to/music/dir/ | grep ".mp3"

Innanzitutto, ls stamperà il contenuto della tua directory musicale sull'output e quindi grep abbinerà tutte le righe che contengono .mp3 in esse. Non vedrai l'output di ls poiché abbiamo reindirizzato questi dati a grep direttamente.

33. Cerca testo nei file

Puoi anche utilizzare grep per cercare modelli di testo specifici in un singolo file o in una raccolta di file. Si supponga di voler individuare tutti i file di programma C che contengono il testo principale in loro. Non preoccuparti di questo, puoi sempre grep per questo.

$ grep -l 'main' /path/to/files/*.c

Per impostazione predefinita, grep dovrebbe codificare a colori la porzione di corrispondenza per aiutarti a visualizzare facilmente i risultati. Tuttavia, se non riesce a farlo nella tua macchina Linux, prova ad aggiungere il –color opzione al tuo comando.

34. Trova host di rete

Il file /etc/hosts contiene informazioni come l'IP host e il nome host. Puoi usare grep per trovare informazioni specifiche da questa voce usando il comando seguente.

$ grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" /etc/hosts

Non allarmarti se non ottieni subito lo schema. Se lo scomponi uno per uno, è molto facile da capire. In realtà, questo modello cerca tutte le corrispondenze nell'intervallo 0.0.0.0 e 999.999.999.999. Puoi anche cercare utilizzando i nomi host.

35. Trova i pacchetti installati

Linux si trova in cima a diverse librerie e pacchetti. Lo strumento da riga di comando dpkg consente agli amministratori di controllare i pacchetti su distribuzioni Linux basate su Debian come Ubuntu. Di seguito vedrai come utilizziamo grep per filtrare le informazioni essenziali su un pacchetto utilizzando dpkg.

$ dpkg --list | grep "chrome"

Fa emergere diverse informazioni utili nella mia macchina tra cui il numero di versione, l'architettura e la descrizione del browser Google Chrome. Puoi usarlo per trovare informazioni per i pacchetti installati nel tuo sistema in modo simile.

36. Trova immagini Linux disponibili

Stiamo usando ancora una volta l'utilità grep con il comando dpkg per trovare tutte le immagini Linux disponibili. L'output di questo comando varia ampiamente tra i sistemi.

$ dpkg --list | grep linux-image

Questo comando stampa semplicemente il risultato di dpkg –list e lo invia a grep. Quindi corrisponde a tutte le righe per il modello specificato.

37. Trova le informazioni sul modello per la CPU

Il comando seguente mostra come individuare le informazioni sul modello della CPU nei sistemi basati su Linux utilizzando il comando grep.

$ cat /proc/cpuinfo | grep -i 'model'
$ grep -i "model" /proc/cpuinfo

Nel primo esempio, abbiamo reindirizzato l'output di cat /proc/cpuinfo a grep e abbinato tutte le righe contenenti il ​​modello di parole. Tuttavia, poiché /proc/cpuinfo è esso stesso un file, puoi usare grep direttamente su di esso come mostrato da quest'ultimo esempio.

38. Trova le informazioni di registro

Linux salva tutti i tipi di log nella directory /var per noi amministratori di sistema. Puoi facilmente raccogliere informazioni utili da questi file di registro. Il comando seguente mostra un semplice esempio del genere.

$ grep -i "cron" /var/log/auth.log

Questo comando ispezionerà il file /var/log/auth.log alla ricerca di potenziali righe che contengono informazioni sui lavori CRON di Linux. Il -i flag ci consente di essere più flessibili. L'esecuzione di questo comando mostra tutte le righe con la parola CRON nel file auth.log.

39. Trova le informazioni sul processo

Il prossimo comando dimostrerà come possiamo individuare informazioni utili per i processi di sistema usando grep. Un processo è l'istanza in esecuzione di un programma in macchine Linux.

$ ps auxww | grep 'guake'

Questo comando stamperà tutte le informazioni relative al guake pacchetto. Prova con qualche altro pacchetto se guake non è disponibile nella tua macchina.

40. Seleziona Solo IP validi

In precedenza abbiamo utilizzato un'espressione regolare relativamente più semplice per abbinare gli indirizzi IP da /etc/hosts file. Tuttavia, quel comando corrisponderebbe anche a molti IP non validi poiché gli IP validi possono prendere solo i valori dall'intervallo (1-255) in ciascuno dei loro quattro quadranti.

$ egrep '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' /etc/hosts

Il comando precedente non stamperà indirizzi IP non validi come 999.999.999.999.

41. Cerca all'interno di file compressi

Il front-end zgrep del comando Linux grep ci consente di cercare i modelli direttamente nei file compressi. Dai una rapida occhiata ai seguenti frammenti di codice per una migliore comprensione.

$ gzip test.txt
$ zgrep -i "sample" test.txt.gz

Innanzitutto, stiamo comprimendo il test.txt file utilizzando gzip e quindi utilizzando zgrep per cercare la parola sample.

42. Conta il numero di righe vuote

Puoi facilmente contare il numero di righe vuote in un file usando grep, come mostrato nel prossimo esempio.

$ grep -c "^$" test.txt

Da test.txt contiene solo una singola riga vuota, questo comando restituisce 1. Le righe vuote vengono confrontate utilizzando l'espressione regolare “^$” e il loro conteggio viene stampato sfruttando il -c opzione.

43. Trova più modelli

Finora, ci siamo concentrati sulla ricerca di un singolo modello. L'utilità grep consente inoltre agli utenti di cercare linee con più modelli contemporaneamente. Dai un'occhiata ai seguenti comandi di esempio per vedere come funziona.

$ grep -e 'sample' -e 'file' test.txt
$ grep -e 'sample' test.txt | grep -e 'file'
$ grep -e 'sample\| file' test.txt

Tutti i comandi precedenti stamperanno le righe che contengono sia "campione" che "file".

44. Abbina indirizzi email validi

Molti programmatori esperti amano convalidare l'input dell'utente. Fortunatamente, è molto facile convalidare dati di input come IP ed e-mail utilizzando le espressioni regolari grep. Il comando seguente corrisponderà a tutti gli indirizzi email validi.

$ grep -E -o "\b[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" /path/to/data

Questo comando è estremamente efficiente e abbina facilmente fino al 99% di indirizzi e-mail validi. Puoi usare egrep per velocizzare il processo.

Comandi grep vari

L'utilità grep offre molte più utili combinazioni di comandi che consentono ulteriori operazioni sui dati. In questa sezione stiamo discutendo alcuni comandi usati raramente ma essenziali.

45. Seleziona Pattern da File

Puoi selezionare facilmente i tuoi modelli di espressione regolare per grep da file predefiniti. Usa -f opzione per questo.

$ echo "sample"> file
$ grep -f file test.txt

Stiamo creando un file di input contenente un pattern usando il comando echo. Il secondo comando mostra l'input del file per grep.

46. Contesti di controllo

Puoi controllare facilmente il contesto di output di grep usando le opzioni -A , -B e -C . I seguenti comandi li mostrano in azione.

$ grep -A2 'file' test.txt
$ grep -B2 'file' test.txt
$ grep -C3 'Linux' test.txt

Il primo esempio mostra le 2 righe successive alla corrispondenza, il secondo esempio le 2 precedenti e l'ultimo esempio entrambe.

47. Elimina i messaggi di errore

Le -s l'opzione consente agli utenti di eliminare i messaggi di errore predefiniti mostrati da grep in caso di file inesistenti o illeggibili.

$ grep -s 'file' testing.txt
$ grep −−no-messages 'file' testing.txt

Anche se non esiste un file denominato testing.txt nella mia directory di lavoro, grep non emette alcun messaggio di errore per questo comando.

48. Visualizza le informazioni sulla versione

L'utilità grep è molto più vecchia di Linux stesso e risale ai primi giorni di Unix. Usa il comando successivo se vuoi ottenere le informazioni sulla versione di grep.

$ grep -V
$ grep --version

49. Visualizza la pagina della guida

La pagina della guida di grep contiene un elenco riepilogativo di tutte le funzioni disponibili. Aiuta a superare molti problemi direttamente dal terminale.

$ grep --help

Questo comando invocherà la pagina della guida per grep.

50. Consulta la documentazione

La documentazione di grep è estremamente dettagliata e fornisce un'introduzione completa alle funzionalità disponibili e all'uso delle espressioni regolari. Puoi consultare la pagina di manuale di grep usando il comando seguente.

$ man grep

Pensieri finali

Dal momento che puoi creare qualsiasi combinazione di comandi utilizzando le robuste opzioni CLI di grep, è difficile incapsulare tutto ciò che riguarda il comando grep in un'unica guida. Tuttavia, i nostri redattori hanno fatto del loro meglio per delineare quasi tutti gli esempi pratici di grep per aiutarti a familiarizzare con esso molto meglio. Ti suggeriamo di esercitarti con il maggior numero possibile di questi comandi e trovare modi per incorporare grep nell'elaborazione quotidiana dei file. Anche se ogni giorno potresti dover affrontare nuovi ostacoli, questo è l'unico modo per padroneggiare davvero il comando grep di Linux.


Linux
  1. 10 tutorial sui comandi Linux per principianti ed esperti

  2. Spiegazione del comando Linux wc per principianti (6 esempi)

  3. 8 esempi pratici del comando Xargs di Linux per principianti

  4. 10 esempi pratici di comandi Grep per sviluppatori

  5. 5 esempi pratici di comando principale in Linux

Comando ls in Linux per elencare i file

40 Esempio pratico e produttivo di comandi Linux df

40 Comando awk pratico e utile in Linux e BSD

25 Pratico comando mv in Linux per utenti quotidiani

16 Esempi pratici e utili di Echo Command in Linux

Pratici comandi Tee Linux e Unix per l'amministratore Linux