grep

Comando Grep in Linux

Comando Grep in Linux
Il comando Grep (global regular expression print) è l'utilità della riga di comando Linux più potente e usata regolarmente. Usando 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 grep

Usando Grep

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

$ grep [opzioni] PATTERN [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 | grep -i "stringa"

Ad esempio, per cercare un nome di 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 determinato file, puoi utilizzare la seguente sintassi del comando:

$ grep "stringa" nome file

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

$ grep "dipendente" file di test1

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:

$ grep “stringa” nomefile1 nomefile2

Ad esempio, per cercare una stringa "dipendente" nei nostri due file testfile1 e testfile2, abbiamo utilizzato 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 jolly se tutti i nomi di file iniziano con lo stesso testo.

$ grep “stringa” nome file*

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

$ grep file di test “dipendente”*

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:

$ grep -i nome file “stringa”

Utilizzando 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. La seguente sintassi può essere utilizzata per questo scopo.

$ grep “parola chiave iniziale.*endingKeyword” nome file

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:

$ grep “questo.*dati” testfile1

Stamperà l'intera riga dal file di prova1 contenente l'espressione (parola chiave iniziale "this" e 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:

$ grep -A nome file "stringa"

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

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 dopo di esso.

$ grep -A 2 -i “dipendente” testfile2

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

$ grep -B nome file "stringa"

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

$ grep -C nome file "stringa"

Evidenziando la ricerca

Grep per impostazione predefinita stampa le linee corrispondenti ma non mostra quale parte della linea è abbinata. 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:

$ grep “stringa” nome file --color

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:

$ grep -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 mostri tutte le righe tranne quella che corrisponde all'input. Per farlo, usa semplicemente il flag -v seguito da grep:

$ grep -v nome file “stringa”

Ad esempio, per visualizzare tutte le righe in un file file di prova3 che non contengono al loro interno la parola “account”, abbiamo utilizzato il seguente comando:

$ grep -v “account” testfile3

Usare Grep con altri comandi

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

$ apt --elenco installato | grep automatico

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 | grep architettura

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 hai bisogno di guardare grandi configurazioni o file di registro e scorrerci informazioni utili.

Le migliori distribuzioni Linux per il gioco nel 2021
Il sistema operativo Linux ha fatto molta strada dal suo aspetto originale, semplice e basato su server. Questo sistema operativo è notevolmente migli...
Come acquisire e riprodurre in streaming la tua sessione di gioco su Linux
In passato, giocare era considerato solo un hobby, ma con il tempo l'industria dei giochi ha visto una crescita enorme in termini di tecnologia e nume...
I migliori giochi da giocare con il tracciamento delle mani
Oculus Quest ha recentemente introdotto la grande idea del tracciamento manuale senza controller. Con un numero sempre crescente di giochi e attività ...