Skip to main content

Esempi di utilizzo del comando Linux grep

Pipes, Grep, Sort Commands: Linux Tutorial 9 (Giugno 2026)

Pipes, Grep, Sort Commands: Linux Tutorial 9 (Giugno 2026)
Anonim

Il comando grep di Linux viene utilizzato come metodo per filtrare l'input. GREP è l'acronimo di Global Regular Expression Printer e quindi, per poterlo utilizzare in modo efficace, è necessario avere una certa conoscenza delle espressioni regolari.

In questo articolo, imparerai una serie di esempi che ti aiuteranno a capire il comando grep.

01 del 09

Come cercare una stringa in un file utilizzando GREP

Immagina di avere un file di testo chiamato libri con i seguenti titoli di libri per bambini:

  • Robin Hood
  • Cappuccetto Rosso
  • Peter Pan
  • Riccioli d'oro e tre orsi
  • Biancaneve e i sette nani
  • Pinocchio
  • Il gatto nel cappello
  • I tre porcellini
  • Il Gruffalo
  • Charlie e la fabbrica di cioccolato

Per trovare tutti i libri con la parola "The" nel titolo si usa la seguente sintassi:

grep I libri

Verranno restituiti i seguenti risultati:

  • Riccioli d'oro e tre orsi
  • Biancaneve e i sette nani
  • Il gatto nel cappello
  • I tre porcellini
  • Il Gruffalo
  • Charlie e la fabbrica di cioccolato

In ogni caso, la parola "The" sarà evidenziata.

La ricerca è sensibile al maiuscolo e minuscolo, quindi se uno dei titoli avesse "il" anziché "Il", non sarebbe stato restituito.

Per ignorare il caso è possibile aggiungere il seguente interruttore:

grep the books --ignore-case

Puoi anche utilizzare l'opzione -i come segue:

grep -i i libri

Continua a leggere sotto

02 del 09

Cerca una stringa in un file usando i caratteri jolly

Il comando grep è molto potente. È possibile utilizzare una moltitudine di tecniche di corrispondenza dei modelli per filtrare i risultati.

In questo esempio, ti mostrerò come cercare una stringa in un file usando i caratteri jolly.

Immagina di avere un file chiamato luoghi con i seguenti nomi di località scozzesi:

AberdeenAberystwythAberlourInverurieInvernessnewburghnuovo cervonuovo gallowayGlasgowEdimburgo

Se vuoi trovare tutti i posti con inver nel nome usa la seguente sintassi:

grep inver * places

Il carattere jolly asterisco (*) sta per 0 o molti. Quindi se si ha un posto chiamato inver o un posto chiamato Inverness allora entrambi sarebbero restituiti.

Un altro carattere jolly che puoi usare è il punto (.). Puoi usarlo per abbinare una singola lettera.

grep inver.r places

Il comando precedente troverebbe i posti chiamati inverurie e inverary ma non troverebbero invereerie perché ci può essere solo un jolly tra i due r come indicato dal singolo periodo.

Il carattere jolly di periodo è utile ma può causare problemi se ne hai uno come parte del testo che stai cercando.

Per esempio guarda questo elenco di nomi di dominio

  • linux.about.com
  • pcsupport.about.com
  • mp3.about.com
  • minecraft.about.com
  • androidgames.about.com
  • netforbeginners.about.com
  • everydaylinuxuser.com
  • google.co.uk
  • google.au
  • direct.gov.uk

Per trovare tutti i circa .com puoi cercare usando la seguente sintassi:

grep * about * domainnames

Il comando sopra potrebbe cadere se la lista contenesse il seguente nome in esso:

  • everydaylinuxuser.com/about.html

Potresti, quindi, provare la seguente sintassi:

grep * about.com domainnames

Funzionerebbe bene a meno che non ci fosse un dominio con il seguente nome:

aboutycom.com

Per cercare realmente il termine about.com, è necessario uscire dal punto come segue:

grep * about .com domainnames

Il carattere jolly finale da mostrare è il punto interrogativo che rappresenta zero o un carattere.

Per esempio:

nomi in fila

Il comando precedente restituirebbe aberdeen, aberystwyth o anche berwick.

Continua a leggere sotto

03 di 09

Cerca le stringhe all'inizio e alla fine della riga utilizzando grep

Il simbolo carato (^) e dollaro ($) ti consentono di cercare i motivi all'inizio e alla fine delle righe.

Immagina di avere un file chiamato calcio con i seguenti nomi di squadra:

  • Blackpool
  • Liverpool
  • Manchester City
  • Leicester City
  • Manchester United
  • Newcastle United
  • FC United Of Manchester

Se si desidera trovare tutte le squadre che sono iniziate con Manchester, si utilizza la seguente sintassi:

grep ^ Squadre di Manchester

Il comando di cui sopra restituirebbe Manchester City e Manchester United ma non l'FC United Of Manchester.

In alternativa, puoi trovare tutte le squadre che terminano con United usando la seguente sintassi:

grep United $ teams

Il comando sopra riportato tornerebbe al Manchester United e al Newcastle United ma non all'FC United Of Manchester.

04 di 09

Conteggio del numero di corrispondenze usando grep

Se non vuoi restituire le linee reali che corrispondono a un pattern usando grep ma vuoi solo sapere quanti ce ne sono, puoi usare la seguente sintassi:

grep -c file di input del modello

Se il modello è stato abbinato due volte, verrà restituito il numero 2.

Continua a leggere sotto

05 di 09

Trovare tutti i termini che non corrispondono usando grep

Immagina di avere un elenco di nomi di luoghi con i Paesi elencati come segue:

  • aberdeen Scozia
  • Glasgow glasgow
  • Liverpool Inghilterra
  • colwyn bay
  • Londra, Inghilterra

Potresti aver notato che colwyn bay non ha alcun paese associato.

Per cercare tutti i luoghi con un paese è possibile utilizzare la seguente sintassi:

grep land $ places

I risultati restituiti sarebbero tutti i posti tranne che per la baia di Colwyn.

Questo ovviamente funziona solo per i luoghi che finiscono in terra (difficilmente scientifico).

È possibile invertire la selezione usando la seguente sintassi:

grep -v land $ places

Questo avrebbe trovato tutti i posti che non finivano con la terra.

06 di 09

Come trovare linee vuote nei file usando grep

Immagina di avere un file di input che viene utilizzato da un'applicazione di terze parti che interrompe la lettura del file quando trova una riga vuota come segue:

  • aberdeen scozia
  • Inverness Scozia
  • liverpool inghilterra
  • colwyn bay wales

Quando l'applicazione raggiunge la linea dopo liverpool, smetterà di leggere il significato che manca a colwyn bay.

Puoi utilizzare grep per cercare righe vuote con la seguente sintassi:

grep ^ $ places

Sfortunatamente questo non è particolarmente utile perché restituisce solo le righe vuote.

Ovviamente potresti ottenere un conteggio del numero di righe vuote come controllo per vedere se il file è valido come segue:

grep -c ^ $ posti

Sarebbe comunque più utile conoscere i numeri di riga che hanno una riga vuota in modo che sia possibile sostituirli. Puoi farlo con il seguente comando:

grep -n ^ $ posti

Continua a leggere sotto

07 di 09

Come cercare stringhe di caratteri maiuscoli o minuscoli che utilizzano grep

Usando grep puoi determinare quali linee in un file hanno caratteri maiuscoli usando la seguente sintassi:

grep 'A-Z' nomefile

Le parentesi quadre ti permettono di determinare l'intervallo di caratteri. Nell'esempio sopra corrisponde a qualsiasi carattere che si trova tra A e Z.

Pertanto per far corrispondere i caratteri minuscoli è possibile utilizzare la seguente sintassi:

grep 'a-z' nomefile

Se vuoi abbinare solo lettere e non numeri o altri simboli puoi usare la seguente sintassi:

grep 'a-zA-Z' nomefile

Puoi fare lo stesso con i numeri come segue:

grep '0-9' nomefile ' 08 di 09

Alla ricerca di pattern ripetuti usando grep

Puoi usare le parentesi graffe {} per cercare un motivo ripetuto.

Immagina di avere un file con numeri di telefono come segue:

  • 055-1234
  • 055-4567
  • 555-1545
  • 444-0167
  • 444-0854
  • 4549-2234
  • x44-1234

Sai che la prima parte del numero deve essere di tre cifre e vuoi trovare le linee che non corrispondono a questo schema.

Dall'esempio precedente sai che 0-9 restituisce tutti i numeri in un file.

In questo caso vogliamo le linee che iniziano con tre numeri seguiti da un trattino (-). Puoi farlo con la seguente sintassi:

grep "^ 0-9 0-9 0-9 -" numeri

Come sappiamo dagli esempi precedenti, il carat (^) significa che la linea deve iniziare con il seguente schema.

0-9 cercherà qualsiasi numero compreso tra 0 e 9. Poiché questo è incluso tre volte corrisponde a 3 numeri. Infine c'è un trattino per indicare che un trattino deve avere successo con i tre numeri.

Usando le parentesi graffe puoi rendere la ricerca più piccola come segue:

grep "^ 0-9 {3 } -" numeri

La barra sfugge alla {parentesi in modo che funzioni come parte dell'espressione regolare, ma in sostanza ciò che sta dicendo è 0-9 {3} che significa qualsiasi numero compreso tra 0 e 9 tre volte.

Le parentesi graffe possono anche essere utilizzate come segue:

{5,10}{5,}

{5,10} significa che il carattere cercato deve essere ripetuto almeno 5 volte ma non più di 10 mentre il {5,} significa che il personaggio deve essere ripetuto almeno 5 volte, ma può essere più di quello.

Continua a leggere sotto

09 di 09

Uso dell'output da altri comandi Uso di grep

Finora abbiamo esaminato la corrispondenza dei modelli all'interno dei singoli file, ma grep può utilizzare l'output di altri comandi come input per la corrispondenza dei pattern.

Un ottimo esempio di ciò è l'utilizzo del comando ps che elenca i processi attivi.

Ad esempio, esegui il seguente comando:

ps -ef

Verranno visualizzati tutti i processi in esecuzione sul tuo sistema.

Puoi utilizzare grep per cercare un particolare processo in esecuzione come segue:

ps -ef | grep firefox

Sommario

Il comando grep è un comando fondamentale di Linux ed è uno che vale la pena di imparare in quanto renderà la vita molto più facile durante la ricerca di file e processi quando si utilizza il terminale.