Comando Grep in Linux

Grep Command Linux



Il comando Grep (global regular expression print) è l'utilità della riga di comando Linux più potente e utilizzata regolarmente. Utilizzando Grep, puoi cercare informazioni utili specificando un criterio di ricerca. Cerca un particolare modello di espressione in un file specificato. Quando trova una corrispondenza, stampa tutte le righe di un file che corrisponde al modello specificato. È utile quando devi filtrare file di registro di grandi dimensioni.

In questo articolo spiegheremo l'uso dell'utilità grep con diversi esempi. Useremo Debian 10 per spiegare i comandi e i metodi menzionati in questo articolo.







Installazione di Grep

Grep viene installato nella maggior parte delle distribuzioni Linux. Tuttavia, nel caso in cui non sia presente nel sistema, è possibile installarlo utilizzando il seguente metodo in Terminale:



$sudo apt-get install presa

Usando Grep

Ecco la sintassi di base del comando grep. Inizia con grep seguito da alcune opzioni e criteri di ricerca e quindi termina con il nome del file.



$presa [opzioni]MODELLO[FILE...]

Cerca file

Per cercare un nome di file in una directory che contiene una stringa specifica, puoi usare grep nel modo seguente:





$ls -l | presa -iocorda

Ad esempio, per cercare un nome di file che contiene una stringa test , il comando sarebbe:

$ls-l| presa-iotest

Questo comando elenca tutti i file che contengono la stringa test .



Cerca una stringa in un file

Per cercare una stringa in un determinato file, puoi utilizzare la seguente sintassi del comando:

$presanome file stringa

Ad esempio, per cercare una stringa test in un file chiamato file di prova1 , abbiamo usato il seguente comando :

$presafile di prova del dipendente1

L'output sopra ha restituito la frase dal file di prova1 che contiene la stringa dipendente .

Cerca una stringa in più file

Per cercare una stringa in più file, puoi utilizzare la seguente sintassi del comando:

$presastringa nomefile1 nomefile2

Ad esempio, per cercare un impiegato di stringa nei nostri due file testfile1 e testfile2, abbiamo utilizzato il seguente comando:

$presadipendente testfile1 testfile2

Il comando sopra elencherà tutte le righe che contengono la stringa impiegato da entrambi i file testfile1 e testfile2.

Puoi anche usare un carattere jolly se tutti i nomi di file iniziano con lo stesso testo.

$presanome file stringa*

Ad esempio, se prendiamo l'esempio sopra in cui erano i nostri nomi di file fileprova1 e fileprova2 , il comando sarebbe:

$presafile di prova dei dipendenti*

Cerca una stringa in un file ignorando il caso della stringa

Molto spesso, lo hai riscontrato quando cerchi qualcosa usando grep ma non ricevi un output. Ciò accade a causa di una mancata corrispondenza tra maiuscole e minuscole durante la ricerca di una stringa. Come nel nostro esempio, se usiamo erroneamente Dipendente invece di dipendente , restituirà zero poiché il nostro file contiene la stringa dipendente in lettere minuscole.

Puoi dire a grep di ignorare il caso della stringa di ricerca usando il flag –i dopo grep come segue:

$presa–i stringa nomefile

Usando il flag –i, il comando eseguirà la ricerca senza distinzione tra maiuscole e minuscole e restituirà tutte le righe contenenti la stringa dipendente in esso senza tener conto delle lettere sono in maiuscolo o minuscolo.

Cerca usando l'espressione regolare

Se usata correttamente, l'espressione regolare è una funzionalità molto efficace in grep. Con il comando Grep, puoi definire un'espressione regolare con una parola chiave iniziale e una finale. In questo modo, non sarà necessario digitare l'intera riga con il comando grep. A questo scopo può essere utilizzata la seguente sintassi.

$presaparola chiave di partenza.*nomefile parola chiave finale

Ad esempio, per cercare una riga in un file chiamato testfile1 che inizi con la stringa this e termini con la stringa data, abbiamo utilizzato il seguente comando:

$presaquesto.*file di test dati1

Stamperà l'intera riga dal file di prova1 contenente l'espressione (la parola chiave iniziale this e la parola chiave finale data).

Stampa un particolare numero di righe dopo/prima della stringa di ricerca

Puoi anche visualizzare il numero specifico di righe in un file prima/dopo una corrispondenza di stringa insieme alla stringa stessa. A questo scopo può essere utilizzata la seguente sintassi:

$presa -A <n>nome file stringa

Verrà visualizzato il numero N di righe dopo che la stringa è stata trovata nel file specificato, inclusa la stringa corrispondente.

Ad esempio, questo è il nostro file di esempio denominato filediprova2 .

Il seguente comando restituirà la riga corrispondente contenente la stringa dipendente , insieme alle 2 righe successive.

$presa-A2–i file di test dei dipendenti2

Allo stesso modo, per visualizzare il numero N di righe prima della stringa corrispondente in un file specifico, utilizzare la seguente sintassi:

$presa -B <n>nome file stringa

Per visualizzare il numero N di righe attorno alla stringa in un file specifico, utilizzare la seguente sintassi:

$presa -C <n>nome file stringa

Evidenziando la ricerca

Grep per impostazione predefinita stampa le righe corrispondenti ma non mostra quale parte della riga corrisponde. Se usi l'opzione –color con grep, mostrerà dove appaiono le stringhe di lavorazione nel tuo file. Grep per impostazione predefinita usa il colore rosso per l'evidenziazione.

A questo scopo può essere utilizzata la seguente sintassi:

$presanome file stringa--colore

Contare il numero di partite

Se vuoi contare quante volte una particolare parola appare in un file specifico, puoi usare l'opzione grep con –c. Restituisce solo il numero di corrispondenze anziché le corrispondenze stesse. A questo scopo può essere utilizzata la seguente sintassi:

$presa–c stringa nome file

Questo è il nostro file di esempio simile a:

Di seguito è riportato un esempio di un comando che ha restituito il numero di volte in cui la parola file è apparso in un file chiamato file di prova3 .

Ricerca invertita

A volte, si desidera eseguire una ricerca inversa che visualizzi tutte le righe tranne quelle corrispondenti all'input. Per farlo, usa semplicemente il flag –v seguito da grep:

$presa–v stringa nome file

Ad esempio, per visualizzare tutte le righe in un file file di prova3 che non contengono la parola account, abbiamo usato il seguente comando:

$presa–v account testfile3

Usare Grep con altri comandi

Grep può essere utilizzato anche per filtrare il risultato richiesto dall'output di comandi diversi. Ad esempio, da apt –elenco installato comando, vuoi trovare solo i pacchetti che sono stati installati automaticamente, puoi filtrare il risultato usando grep come segue:

$adatto--installatoelenco| presaautomatico

Allo stesso modo, lscpu fornisce informazioni dettagliate sulla CPU. Se sei interessato solo alle informazioni riguardanti l'architettura della CPU, puoi filtrarle usando il seguente comando:

$lscpu| presaArchitettura

In questo articolo abbiamo descritto alcuni esempi che ti aiuteranno a comprendere i comandi grep e il suo utilizzo in diverse condizioni. Avere una forte padronanza del comando grep può far risparmiare molto tempo se è necessario esaminare grandi configurazioni o file di registro e scorrere le informazioni utili attraverso di essi.