4 minuto/i di lettura

TLDR: esercitazione guidata per studiare il comando grep dalle basi fino a funzioni più avanzate come le espressioni regolari e le opzioni per modificare l’output.

Obiettivi:

  • Imparare a utilizzare grep per cercare stringhe di testo in file.
  • Imparare le opzioni principali di grep.
  • Eseguire ricerche avanzate usando le espressioni regolari.

Parte 1: Ricerca base con grep

1.1. Creazione di un file di esempio

Prima di iniziare, crea un file di testo con cui lavorare.

    nano file.txt

scrivi il seguente contenuto:

Ciao mondo
Grep è un comando utile
Puoi usarlo per cercare testo nei file
grep supporta anche espressioni regolari
viene usato moltissimo
grep è così utile che ha dato
origine a un terribile neologismo: grepping
in italiano suonerebbe ancora più terribile: greppare

verifica il contenuto con:

cat file.txt

1.2. Uso base di grep

Il comando grep può essere usato per cercare una stringa specifica in un file.

Esercizio: Trova tutte le righe che contengono la parola grep.

grep "grep" file.txt

output:

grep supporta anche espressioni regolari
grep è così utile che ha dato 
origine a un terribile neologismo: to grepping
in italiano suonerebbe ancora più terribile: greppare

a differenza di cat grep ha filtrato le righe dove è presente la stringa"grep".

Ora prova :

grep "ne" file.txt

output:

Puoi usarlo per cercare testo nei file
viene usato moltissimo
origine a un terribile neologismo: to grepping
in italiano suonerebbe ancora più terribile: greppare

1.3. grep è case-sensitive

Di default, grep distingue tra lettere maiuscole e minuscole.

Esercizio: Prova a cercare la stringa Grep (con la G maiuscola).

grep "Grep" file.txt

output:

Grep è un comando utile

1.4. Ignora le differenze tra maiuscole e minuscole

Usa l’opzione -i per fare una ricerca case-insensitive.

Esercizio: Cerca di nuovo la stringa grep, ignorando maiuscole e minuscole.

grep -i "grep" file.txt

ha differenza di prima ha incluso sia lighe con grep sia quelle con Grep (con la G maiuscola)

1.5. effettua la ricerca con le parole intere

Usa l’opzione -w per ricercale le paorole intere.

Esercizio: Cerca la parola grep.

grep -w "grep" file.txt

output:

grep supporta anche espressioni regolari
grep è così utile che ha dato 

Esercizio: Cerca la parola grep in modo case-insensitive.

grep -wi "grep" file.txt

output:

Grep è un comando utile
grep supporta anche espressioni regolari
grep è così utile che ha dato 

Parte 2: Opzioni utili di grep

2.1. Mostra il numero di riga

Usa l’opzione -n per mostrare il numero di riga in cui si trova il testo cercato.

Esercizio: Trova la parola grep e visualizza il numero di riga.

grep -n "grep" file.txt

output:

4:grep supporta anche espressioni regolari
6:grep è così utile che ha dato 
7:origine a un terribile neologismo: to grepping
8:in italiano suonerebbe ancora più terribile: greppare

2.2. Conta le occorrenze

Usa l’opzione -c per contare quante volte una parola appare in un file.

Esercizio: Conta quante volte appare la parola grep.

grep -c "grep" file.txt

output:

4

Esercizio: Conta quante volte appare la parola grep in modo case-insensitive.

grep -ci "grep" file.txt

Risultato atteso:

5

ricodi? c’era una riga con Grep (con la G maiuscola)

2.5. Escludi righe con una parola specifica

Usa l’opzione -v per escludere le righe che contengono una parola specifica.

Esercizio: Escludi le righe che contengono la parola grep.

grep -v "grep" file.txt

output:

Ciao mondo
Grep è un comando utile
Puoi usarlo per cercare testo nei file
viene usato moltissimo

2.6. Visualizza qualche riga prima della riga filtrata

Usa l’opzione -B n per visualizzare n righe prima delle righe filtrate.

Esercizio: Visualizza 2 righe prima di quelle che contengono la parola viene.

grep -B 2  "viene" file.txt

output:

Grep è un comando utile
Puoi usarlo per cercare testo nei file
viene usato moltissimo

2.7. Visualizza qualche riga dopo la riga filtrata

Usa l’opzione -A n per visualizzare _n_righe dopo le righe filtrate.

Esercizio: Visualizza 1 riga dopo quelle che contengono la parola viene.

grep -A 1  "viene" file.txt

output:

viene usato moltissimo
grep è così utile che ha dato 
origine a un terribile neologismo: to grepping

2.8. Composizione delle opzioni -A e -B

Esercizio: Visualizza 1 riga prima e 2 righe dopo le righe che contengono la parola Puoi.

grep -B 1 -A2  "Puoi" file.txt

2.9 Uso di grep con piping

grep è comunemente usato nella forma in piping con qualche comando.

Esercizio: Visualizza 1 riga prima e 2 righe dopo le righe che contengono la parola Puoi.

cat file.txt | grep -B 1 -A2  "Puoi" 

l’output del comando cat viene dato in input a grep. In questo caso abbiamo digitato solo dei caratteri in più.

Ma è utilissimo quando l’output di qualche comando mostra centinaia di righe:

lancia :

ps -A

questo comando mostra i processi attivi sul sstema con il proprio PID. ora lancia :

ps -A | grep ssh

nota che ha filtrato le righe dove è presente la stringa ssh e non c’è stato bisogno di usare le virgolette


DI PIÙ:

Parte 3: Espressioni regolari con grep

3.1. Cerca una parola che inizia con una determinata lettera

Usa l’opzione -E per abilitare le espressioni regolari estese.

Esercizio: Trova le righe che contengono parole che iniziano con la lettera P.

grep -E "\bP\w+" file.txt

output:

Puoi usarlo per cercare testo nei file

3.2. Trova tutte le righe che finiscono con una parola specifica

Usa il simbolo $ per indicare la fine di una riga.

Esercizio: Trova tutte le righe che finiscono con la stringa le.

grep "le$" file.txt

output:

Grep è un comando utile
Puoi usarlo per cercare testo nei file

per studiare le espressioni regolari utili per la manipolazione di stringhe vedere questo bellisimo sito: https://regex101.com/

3.3. Cerca più parole contemporaneamente

Usa l’opzione -E (o egrep) per abilitare le espressioni regolari estese e cerca più parole contemporaneamente.

Esercizio: Cerca le righe che contengono la parola viene o la parola file.

grep -E "file|viene" file.txt

output:

Puoi usarlo per cercare testo nei file
viene usato moltissimo