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.

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 trovato il pattern desiderato; 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 effetturà un 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 stà 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 (".") che rappresenterà 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 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

Pubblicitร 
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

su e sudo, vengono considerati a torto due comandi...

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

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

Come svuotare la memoria Cache in Linux?

La memoria cache è stata creata perché, anche quando...

Installare un’interfaccia grafica su Ubuntu Server

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

Creiamo un file server con Samba

La finalità di una rete locale di computer (LAN)...
Pubblicitร