back to top

Effettuare ricerche con grep e le regular expressions

Il comando grep, molto utilizzato sia in Unix che nella maggior parte delle distribuzioni Linux, รจ stato concepito per la ricerca all’interno di uno o piรน file di righe contenenti determinate stringhe (patterns).

Si tratta di un comando estremamente utile in grado di svolgere ricerche anche all’interno di documenti o gruppi di documenti particolarmente ampi. In questo articolo, esploreremo la sintassi, gli utilizzi e gli esempi pratici per utilizzare grep in combinazione con le espressioni regolari.

Pubblicitร 

La sintassi standard utilizzata per grep prevede istruzioni contenenti il nome del comando, eventuali opzioni, pattern da ricercare e nome del file o dei file su cui deve essere effettuata la ricerca:

grep [opzioni] "pattern" nome_file ...

Una volta digitata l’istruzione da Shell, sarร  sufficiente premere [Invio] per dare il via alla ricerca; ecco un possibile esempio:

grep php linguaggi

Nel caso dell’esempio appena proposto, il comando cercherร  la stringa “php” all’interno del file “linguaggi”. Quando vengono passati come parametri piรน documenti su cui svolgere la ricerca, l’output prodotto sarร  comprensivo del nome dei file in cui รจ stata trovata la pattern desiderata; ad esempio:

grep php *
linguaggi: php รจ un linguaggio SSI
linguaggi: Il linguaggio di scripting php
scripts: Una newsletter con php

Il comando considera come percorso di ricerca valido la directory corrente a meno che non ne venga specificata una differente; una volta lanciata l’istruzione, grep effettuerร  uno pattern scanning di tutti i documenti contenuti nella cartella e restituirร  i risultati validi per ogni documento trovato positivo ai fini della ricerca.

Come si sarร  potuto notare, grep accetta come parametro il carattere sostitutivo “*” che in questo caso significa “tutti i file”. Ma le ricerche effettuate tramite questo comando possono essere raffinate utilizzando le espressioni regolari. In effetti, il termine grep รจ un acronimo dall’Inglese che sta per global regular expression and print.

Se per esempio volessimo digitare il seguente comando:

grep 'mrw.*r' siti_web

Lo scanning verrร  effettuato ricercando tutti i pattern che iniziano con i caratteri “mrw” e terminano con “r” all’interno del file “siti_web”. L’uso dei singoli apici permette di non visualizzare il carattere “*” come carattere jolly; in questo caso, l’asterisco non equivarrร  quindi a tutti i caratteri possibili, ma indicherร  la possibilitร  di ripetere dei caratteri per un numero non definito di volte. Sarร  invece il punto fermo (“.“) a rappresentare tutti i caratteri, tranne la newline.

Vediamo quindi un elenco di caratteri che possono essere utilizzati nelle espressioni regolari con grep:

  • . significa “qualsiasi carattere”.
  • ^ indica l’inizio di una linea.
  • $ indica la fine di una linea.
  • < indica l’inizio di una parola.
  • > indica la fine di una parola.
  • ? significa che l’elemento che lo precede รจ presente meno di una volta.
  • * significa che l’elemento che lo precede รจ presente zero o piรน volte.
  • + significa che l’elemento che lo precede รจ presente una o piรน volte.
  • {n} significa che l’elemento che lo precede รจ presente n volte.
  • {n,} significa che l’elemento che lo precede รจ presente n o piรน volte.
  • {,n} significa che l’elemento che lo precede รจ presente meno di n volte.
  • {n,m} indica un numero di ripetizioni dell’elemento che lo precede compreso nell’intervallo tra n e m; n e m possono essere omessi escludendo il limite corrispondente.

Questi sono i simboli piรน utilizzati; eventuali approfondimenti potranno essere affrontati attraverso la relativa pagina del manuale in linea di Unix e Linux tramite il comando:

man grep

In conclusione, grep รจ uno strumento potente per la ricerca di stringhe nei file. Con la combinazione delle espressioni regolari, diventa un alleato insostituibile per chiunque lavori quotidianamente con la riga di comando. Che si tratti di sviluppatori, sistemisti o appassionati, imparare le potenzialitร  di questo comando permette di risparmiare tempo e di ottenere risultati piรน mirati e precisi. Non sottovalutate mai il potere di grep nel vostro flusso di lavoro!

Altri contenuti interessanti

Pubblicitร 

Potrebbero interessarti queste guide

Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.

Leggi anche...

Linux: recuperare una partizione con GNU Parted o Gpart

A volte, nell'uso quotidiano del computer, possono capitare dei...

Differenze tra su e sudo in Linux

Quando si parla di Linux, uno degli aspetti fondamentali...

Creare una lista dei programmi installati su Ubuntu (per effettuarne il ripristino)

In questo breve post vedremo come visualizzare tutto il...

Criptare (e decriptare) file su Linux con OpenSSL

OpenSSL è un'implementazione rilasciata sotto licenza Open Source dei...

Come svuotare la memoria Cache in Linux?

La memoria cache รจ un componente fondamentale nei sistemi...

Installare un’interfaccia grafica su Ubuntu Server

Indipendentemente dalla versione di riferimento, il ramo principale della...
Pubblicitร