Comando grep in Linux

Comando grep in Linux
Il comando Grep (Global Regular Expression Print) è l'utilità di comando Linux più potente e regolarmente utilizzata. Utilizzando GREP, è possibile cercare informazioni utili specificando i criteri di ricerca. Cerca un particolare modello di espressione in un file specificato. Quando trova una corrispondenza, stampa tutte le righe di un file corrispondente al modello specificato. È utile quando devi filtrare tramite 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 sia mancante dal sistema, è possibile installarlo utilizzando il seguente metodo nel terminale:

$ sudo apt-get Installa grep

Usando grep

Ecco la sintassi di base del comando grep. Si inizia con Grep seguito da alcune opzioni e criteri di ricerca e poi termina con il nome del file.

$ grep [options] pattern [file ...]

Cerca file

Per cercare un nome di file in una directory che contiene una stringa specifica in essa, è possibile utilizzare GREP nel modo seguente:

$ ls -l | grep -i “stringa

Ad esempio, per cercare un nome file che contiene una stringa "test“, Il comando sarebbe:

$ ls -l | Grep -I test

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

Cerca una stringa in un file

Per cercare una stringa in un file particolare, è possibile utilizzare la sintassi del comando seguente:

FileName $ grep "String"

Ad esempio, per cercare una stringa "test"In un file denominato testfile1, Abbiamo usato il seguente comando:

$ grep "dipendente" testfile1

L'output di cui sopra ha restituito la frase da testfile1 che contiene la stringa "dipendente".

Cerca una stringa in più file

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

$ grep "String" FileName1 FileName2

Ad esempio, per cercare una stringa "dipendente" nei nostri due file TestFile1 e TestFile2, abbiamo usato il seguente comando:

$ grep "dipendente" testfile1 testfile2

Il comando sopra elencherà tutte le righe che contengono la stringa "dipendente" da entrambi i file TestFile1 e TestFile2.

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

FileName $ grep "String"*

Ad esempio, se prendiamo l'esempio sopra in cui erano i nostri nomi di file testfile1 e testfile2 , Il comando sarebbe:

$ grep "dipendente" Testfile*

Cerca una stringa in un file ignorando il caso della stringa

Molto spesso, lo hai incontrato quando cerchi qualcosa usando Grep ma non ricevi un output. Questo accade a causa di una mancata corrispondenza del caso mentre cerchi una stringa. Come nel nostro esempio, se usiamo erroneamente "Dipendente" invece di "dipendente", Restituirà zero poiché il nostro file contiene la stringa"dipendente"Nelle lettere minuscole.

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

FileName $ grep -i "String"

Usando il flag -i, il comando eseguirà la ricerca insensibile al caso e restituirà tutte le righe contenenti la stringa "dipendente"In esso senza tenere conto delle lettere sono in maiuscolo o in minuscolo.

Cerca usando l'espressione regolare

Se utilizzata correttamente, l'espressione regolare è una caratteristica molto efficace in grep. Con il comando GREP, è possibile definire un'espressione regolare con una parola chiave iniziale e finale. In questo modo, non dovrai digitare l'intera linea con il comando GREP. La seguente sintassi può essere utilizzata per questo scopo.

$ grep "parola chiave iniziale.FileName *EndingKeyword "

Ad esempio, per cercare una riga in un file denominato testfile1 che inizia con la stringa "questo" e termina con la stringa "dati", abbiamo usato il seguente comando:

$ grep “questo.*Data ”TestFile1

Stamperà l'intera linea da testfile1 contenente l'espressione (la parola chiave iniziale "questo" e la parola chiave finale "dati").

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

È inoltre possibile visualizzare il numero specifico di righe in un file prima/dopo una stringa corrispondente insieme alla stringa abbinata stessa. La seguente sintassi può essere utilizzata per questo scopo:

$ grep -a FileName "String"

Viene visualizzato N Numero di righe dopo che la stringa è abbinata nel file specificato, inclusa la stringa abbinata.

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

Il comando seguente emetterà la riga abbinata contenente la stringa "dipendente", Insieme alle 2 righe dopo di esso.

$ grep -a 2 -i "dipendente" testfile2

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

$ grep -b FileName "String"

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

$ grep -c FileName "String"

Evidenziando la ricerca

Grep per impostazione predefinita di righe abbinate ma non mostra quale parte della linea sia abbinata. Se usi l'opzione -Color con GREP, mostrerà dove vengono visualizzate le stringhe di lavorazione nel file. Grep per impostazione predefinita usa il colore rosso per l'evidenziazione.

La seguente sintassi può essere utilizzata per questo scopo:

FileName $ grep "String"

Contare il numero di corrispondenze

Se si desidera contare quante volte una parola particolare appare in un file specifico, è possibile utilizzare l'opzione GREP con -c. Restituisce solo il numero di partite piuttosto che le partite. La seguente sintassi può essere utilizzata per questo scopo:

FileName $ grep -c "stringa"

Questo è il nostro file di esempio sembra:

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

Ricerca invertita

A volte, si desidera eseguire una ricerca inversa che visualizza tutte le righe tranne quella corrispondente all'ingresso. Per fare ciò, usa semplicemente il flag -v seguito da grep:

FileName $ grep -v "stringa"

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

$ grep -v "account" testfile3

Utilizzo di Grep con altri comandi

Grep può anche essere utilizzato per filtrare il risultato richiesto da diversi comandi. Ad esempio, dal "Elenco Apt -INSTALLED " Output del comando, si desidera trovare solo i pacchetti installati automaticamente, è possibile filtrare il risultato usando Grep come segue:

$ APT -Elenco installato | grep automatico

Allo stesso modo, LSCPU fornisce informazioni dettagliate sulla CPU. Se sei solo interessato alle informazioni relative all'architettura della CPU, puoi filtrarlo utilizzando il seguente comando:

$ lscpu | Architettura grep

In questo articolo, abbiamo descritto alcuni esempi che ti aiuteranno a comprendere i comandi GREP e il suo uso in diverse condizioni. Avere una forte presa sul comando GREP può risparmiare molto tempo se è necessario esaminare i file di configurazione o registrare grandi e sfidare informazioni utili attraverso di essi.