Cos'è grep?
L'utilità grep di cui ci occuperemo oggi è uno strumento Unix che appartiene alla stessa famiglia delle utilità egrep e fgrep. Questi sono tutti strumenti Unix progettati per eseguire attività di ricerca ripetitive su file e testo. Puoi cercare file e il loro contenuto per recuperare informazioni utili specificando criteri di ricerca particolari tramite il comando grep.
Quindi dicono che GREP sta per Global Regular Expression Print, ma da dove ha origine questo comando "grep"? grep deriva sostanzialmente da un comando specifico per il semplicissimo e venerabile editor di testo Unix chiamato ed. Ecco come va il comando ed:
g/re/p
Lo scopo del comando è abbastanza simile a quello che intendiamo per ricerca tramite grep. Questo comando recupera tutte le righe in un file che corrispondono a un determinato modello di testo.
Esploriamo ancora un po' il comando grep. In questo articolo spiegheremo l'installazione dell'utility grep e presenteremo alcuni esempi attraverso i quali puoi imparare esattamente come e in quale scenario puoi usarlo.
Abbiamo eseguito i comandi e le procedure menzionati in questo articolo su un sistema Ubuntu 18.04 LTS.
Installa grep
Sebbene l'utilità grep venga fornita di default con la maggior parte dei sistemi Linux, se non l'hai installata sul tuo sistema, ecco la procedura:
Apri il tuo terminale Ubuntu tramite il Dash o la scorciatoia Ctrl+Alt+T. Quindi inserisci il seguente comando come root per installare grep tramite apt-get:
$ sudo apt-get install grep
Immettere y quando viene richiesto con un'opzione y/n durante la procedura di installazione. Successivamente, l'utilità grep verrà installata sul tuo sistema.
Puoi verificare l'installazione controllando la versione di grep tramite il seguente comando:
$ grep --version
Uso del comando grep con esempi
Il comando grep può essere spiegato al meglio presentando alcuni scenari in cui può essere utilizzato. Ecco alcuni esempi:
Cerca file
Se desideri cercare un nome file che contenga una parola chiave specifica, puoi filtrare l'elenco dei file tramite il comando grep come segue:
Sintassi:
$ ls -l | grep -i “ parola di ricerca”
Esempi:
$ ls -l | grep -i sample
Questo comando elencherà tutti i file nella directory corrente con il nome del file contenente la parola “privato”.
Cerca una stringa in un file
Puoi recuperare una frase da un file che contiene una specifica stringa di testo tramite il comando grep.
Sintassi:
nome file "stringa" grep
Esempio:
$ grep “sample file” sampleFile.txt
Il mio file di esempio sampleFile.txt contiene la frase con la stringa "file di esempio" che puoi vedere nell'output sopra. La parola chiave e la stringa vengono visualizzate in forma colorata nei risultati della ricerca.
Cerca una stringa in più di un file
Nel caso in cui desideri cercare frasi contenenti la tua stringa di testo da tutti i file dello stesso tipo, il comando grep è al tuo servizio.
Sintassi 1:
$ grep "string" filenameKeyword*
Sintassi 2:
$ grep "stringa" *.extension
Esempio1:
$ grep "sample file” sample*
Questo comando preleverà tutte le frasi contenenti la stringa “file di esempio” da tutti i file con il nome del file contenente la parola chiave “campione”.
Esempio 2:
$ grep "sample file” *.txt
Questo comando preleverà tutte le frasi contenenti la stringa “file di esempio” da tutti i file con estensione .txt.
Cerca una stringa in un file senza tener conto del caso della stringa
Negli esempi precedenti, la mia stringa di testo era fortunatamente nello stesso caso di quella trovata nei miei file di testo di esempio. Se avessi inserito il comando seguente, il risultato della mia ricerca sarebbe nullo perché il testo nel mio file non inizia con una parola maiuscola "Campione"
$ grep "Sample file" *.txt
Diciamo a grep di ignorare il caso della stringa di ricerca e di stampare i risultati della ricerca in base alla stringa tramite l'opzione -i.
Sintassi:
$ grep -i nomefile "stringa"
Esempio:
$ grep -i "Sample file" *.txt
Questo comando preleverà tutte le frasi contenenti la stringa “file di esempio” da tutti i file con estensione .txt. Questo non terrà conto se la stringa di ricerca era in maiuscolo o minuscolo.
Cerca sulla base di un'espressione regolare
Tramite il comando grep è possibile specificare un'espressione regolare con una parola chiave inizio e fine. L'output sarà la frase contenente l'intera espressione tra la parola chiave iniziale e finale specificata. Questa funzione è molto potente in quanto non è necessario scrivere un'intera espressione nel comando di ricerca.
Sintassi:
$ grep nome file "startingKeyword.*endingKeyword"
Esempio:
$ grep "starting.*.ending" sampleFile.txt
Questo comando stamperà la frase contenente l'espressione (partendo dalla mia StartingKeyword e terminando con la mia endingKeyword) dal file che ho specificato nel comando grep.
Visualizza un numero specificato di righe dopo/prima della stringa di ricerca
È possibile utilizzare il comando grep per stampare N numero di righe prima/dopo una stringa di ricerca da un file. Il risultato della ricerca include anche la riga di testo contenente la stringa di ricerca.
La sintassi per N numero di righe dopo la stringa di chiave:
$ grep -A
Esempio:
$ grep -A 3 -i "samplestring" sampleFile.txt
Ecco come appare il mio file di testo di esempio:
Ed ecco come appare l'output del comando:
Visualizza 3 righe, inclusa quella contenente la stringa cercata, dal file che ho specificato nel comando grep.
La sintassi per N numero di righe prima della stringa di chiave:
$ grep -B
Puoi anche cercare N numero di righe "intorno" a una stringa di testo. Ciò significa N numero di righe prima e N dopo la stringa di testo.
La sintassi per il numero N di righe attorno alla stringa di chiave:
$ grep -C
Attraverso i semplici esempi descritti in questo articolo, puoi avere un'idea del comando grep. È quindi possibile utilizzarlo per cercare risultati filtrati che possono includere file o contenuti del file. Ciò consente di risparmiare un sacco di tempo sprecato per scorrere tutti i risultati della ricerca prima di padroneggiare il comando grep.