{"id":3641,"date":"2026-07-18T14:07:55","date_gmt":"2026-07-18T12:07:55","guid":{"rendered":"https:\/\/rootmail.it\/courses\/lpic-1-exam-101-010-160-corso-completo-in-italiano\/lessons\/103-7-ricercare-testo-nei-file-utilizzando-le-espressioni-regolari\/"},"modified":"2026-07-20T21:58:20","modified_gmt":"2026-07-20T19:58:20","slug":"103-7-ricercare-testo-nei-file-utilizzando-le-espressioni-regolari","status":"publish","type":"lesson","link":"https:\/\/rootmail.it\/en\/courses\/lpic-1-exam-1-101-500-corso-completo-in-italiano\/lessons\/103-7-ricercare-testo-nei-file-utilizzando-le-espressioni-regolari\/","title":{"rendered":"103.7 Ricercare testo nei file utilizzando le espressioni regolari"},"content":{"rendered":"<h2>103.7 Ricercare testo nei file utilizzando le espressioni regolari<\/h2>\n<p>Le <strong>espressioni regolari<\/strong> (in inglese <em>Regular Expressions<\/em>, spesso abbreviate in <strong>regex<\/strong>) sono uno degli strumenti pi\u00f9 potenti disponibili nei sistemi Linux per la ricerca e l&#8217;elaborazione del testo. Consentono di descrivere modelli di ricerca attraverso una sintassi compatta, permettendo di individuare parole, numeri, indirizzi, percorsi e qualsiasi altro schema ricorrente all&#8217;interno di file di testo. Le espressioni regolari sono utilizzate da numerosi strumenti del sistema, tra cui <code>grep<\/code>, <code>sed<\/code>, <code>awk<\/code>, <code>find<\/code> e molti linguaggi di programmazione. Per questo motivo rappresentano una competenza fondamentale per ogni amministratore Linux. In questa lezione imparerai a utilizzare le espressioni regolari di base per effettuare ricerche efficienti nei file di testo mediante il comando <code>grep<\/code>.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Exam Tip<\/strong> Per l&#8217;esame LPIC-1 \u00e8 fondamentale conoscere le espressioni regolari di base (Basic Regular Expressions &#8211; BRE), i principali metacaratteri e il loro utilizzo con il comando <code>grep<\/code>.<\/p><\/blockquote>\n<hr \/>\n<h2>\ud83c\udfaf Obiettivi della lezione<\/h2>\n<p>Al termine di questa lezione sarai in grado di:<\/p>\n<ul>\n<li>comprendere il funzionamento delle espressioni regolari;<\/li>\n<li>ricercare testo all&#8217;interno dei file utilizzando <code>grep<\/code>;<\/li>\n<li>utilizzare i principali metacaratteri delle espressioni regolari;<\/li>\n<li>costruire semplici pattern di ricerca;<\/li>\n<li>distinguere tra testo letterale e caratteri speciali.<\/li>\n<\/ul>\n<hr \/>\n<h2>Argomenti trattati<\/h2>\n<ul>\n<li>Introduzione alle espressioni regolari.<\/li>\n<li>Ricerca di testo con <code>grep<\/code>.<\/li>\n<li>Metacaratteri pi\u00f9 comuni (<code>.<\/code>, <code>*<\/code>, <code>^<\/code>, <code>$<\/code>, <code>[]<\/code>).<\/li>\n<li>Classi di caratteri e intervalli.<\/li>\n<li>Espressioni regolari di base (BRE) ed estese (ERE).<\/li>\n<li>Utilizzo pratico delle regex nell&#8217;amministrazione di sistemi Linux.<\/li>\n<\/ul>\n<blockquote><p><strong> Provalo subito<\/strong><br \/>\nApri un terminale e crea un semplice file di testo contenente alcune righe con parole e numeri. Durante la lezione utilizzerai <code>grep<\/code> e le espressioni regolari per ricercare rapidamente le informazioni desiderate.<\/p><\/blockquote>\n<h2>103.7.1 Introduzione alle espressioni regolari<\/h2>\n<p>Le <strong>espressioni regolari<\/strong> (Regular Expressions o <strong>regex<\/strong>) sono sequenze di caratteri utilizzate per descrivere un modello di ricerca (<em>search pattern<\/em>). Invece di cercare una parola esatta, permettono di individuare tutte le stringhe che rispettano determinate regole.<\/p>\n<p>Le regex sono ampiamente utilizzate nell&#8217;amministrazione di sistemi Linux per analizzare file di log, verificare configurazioni, cercare informazioni all&#8217;interno di grandi quantit\u00e0 di testo e automatizzare numerose attivit\u00e0.<\/p>\n<p>Molti strumenti Linux, come <code>grep<\/code>, <code>sed<\/code>, <code>awk<\/code> e numerosi linguaggi di programmazione, supportano le espressioni regolari.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Exam Tip<\/strong> Per l&#8217;esame LPIC-1 \u00e8 importante comprendere che una regex descrive un modello di ricerca e non una stringa specifica. Lo stesso pattern pu\u00f2 quindi corrispondere a numerose stringhe differenti.<\/p><\/blockquote>\n<hr \/>\n<h3>Che cos&#8217;\u00e8 una regex?<\/h3>\n<p>Una regex \u00e8 composta da caratteri normali e da <strong>metacaratteri<\/strong>, cio\u00e8 simboli con un significato speciale.<\/p>\n<p>Ad esempio, il seguente pattern:<\/p>\n<pre><code>^a.*z$\r\n<\/code><\/pre>\n<p>corrisponde a qualsiasi stringa che:<\/p>\n<ul>\n<li>inizia con la lettera <code>a<\/code>;<\/li>\n<li>pu\u00f2 contenere zero o pi\u00f9 caratteri qualsiasi;<\/li>\n<li>termina con la lettera <code>z<\/code>.<\/li>\n<\/ul>\n<p>Ad esempio, il pattern corrisponde alle seguenti stringhe:<\/p>\n<pre><code>abz\r\nalphabetz\r\namazingz\r\n<\/code><\/pre>\n<p>mentre non corrisponde a:<\/p>\n<pre><code>pizza\r\nzebra\r\napple\r\n<\/code><\/pre>\n<hr \/>\n<h3>Analisi del pattern<\/h3>\n<p>Il pattern:<\/p>\n<pre><code>^a.*z$\r\n<\/code><\/pre>\n<p>\u00e8 composto da quattro elementi fondamentali:<\/p>\n<table>\n<thead>\n<tr>\n<th>Elemento<\/th>\n<th>Significato<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>^<\/code><\/td>\n<td>Inizio della riga.<\/td>\n<\/tr>\n<tr>\n<td><code>a<\/code><\/td>\n<td>La stringa deve iniziare con la lettera &#8220;a&#8221;.<\/td>\n<\/tr>\n<tr>\n<td><code>.*<\/code><\/td>\n<td>Qualsiasi carattere ripetuto zero o pi\u00f9 volte.<\/td>\n<\/tr>\n<tr>\n<td><code>z$<\/code><\/td>\n<td>La stringa deve terminare con la lettera &#8220;z&#8221;.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Nelle prossime sezioni analizzeremo in dettaglio il significato di ciascun metacarattere.<\/p>\n<hr \/>\n<h3>Perch\u00e9 utilizzare le espressioni regolari?<\/h3>\n<p>Le regex consentono di effettuare ricerche molto pi\u00f9 potenti rispetto alla semplice ricerca di una parola.<\/p>\n<p>Ad esempio, \u00e8 possibile cercare:<\/p>\n<ul>\n<li>tutte le righe che iniziano con una determinata parola;<\/li>\n<li>indirizzi IP;<\/li>\n<li>indirizzi e-mail;<\/li>\n<li>date in uno specifico formato;<\/li>\n<li>numeri di telefono;<\/li>\n<li>file con nomi che seguono un determinato schema.<\/li>\n<\/ul>\n<p>Questa flessibilit\u00e0 rende le espressioni regolari uno strumento indispensabile per l&#8217;amministrazione di sistemi Linux.<\/p>\n<blockquote><p><strong>\ud83d\udccc Da ricordare<\/strong> Una regex non cerca necessariamente una parola precisa, ma tutte le stringhe che rispettano il modello definito dal pattern.<\/p><\/blockquote>\n<hr \/>\n<h3>Best Practice<\/h3>\n<p>Quando inizi a lavorare con le espressioni regolari, costruisci i pattern in modo graduale. Parti da una ricerca semplice e aggiungi progressivamente i metacaratteri necessari. Questo approccio rende le regex pi\u00f9 facili da comprendere, verificare e correggere.<\/p>\n<hr \/>\n<h3>Riepilogo<\/h3>\n<ul>\n<li>Una espressione regolare descrive un modello di ricerca.<\/li>\n<li>Le regex sono utilizzate da strumenti come <code>grep<\/code>, <code>sed<\/code> e <code>awk<\/code>.<\/li>\n<li>I metacaratteri permettono di definire criteri di ricerca molto flessibili.<\/li>\n<li>Il pattern <code>^a.*z$<\/code> individua le stringhe che iniziano con <code>a<\/code> e terminano con <code>z<\/code>.<\/li>\n<li>Le espressioni regolari sono fondamentali nell&#8217;amministrazione dei sistemi Linux.<\/li>\n<\/ul>\n<h2>103.7.2 Espressioni regolari di base (BRE) ed estese (ERE)<\/h2>\n<p>Linux supporta due principali varianti delle espressioni regolari:<\/p>\n<ul>\n<li><strong>Basic Regular Expressions (BRE)<\/strong>;<\/li>\n<li><strong>Extended Regular Expressions (ERE)<\/strong>.<\/li>\n<\/ul>\n<p>Entrambe consentono di descrivere modelli di ricerca, ma differiscono per il modo in cui interpretano alcuni metacaratteri.<\/p>\n<p>Nella pratica quotidiana incontrerai entrambe le sintassi, poich\u00e9 strumenti diversi utilizzano una variante differente.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Exam Tip<\/strong> Per l&#8217;esame LPIC-1 \u00e8 importante conoscere la differenza tra <strong>BRE<\/strong> ed <strong>ERE<\/strong> e sapere che <code>grep<\/code> utilizza BRE per impostazione predefinita, mentre <code>grep -E<\/code> abilita le Extended Regular Expressions.<\/p><\/blockquote>\n<hr \/>\n<h3>Basic Regular Expressions (BRE)<\/h3>\n<p>Le <strong>Basic Regular Expressions<\/strong> rappresentano la sintassi tradizionale delle espressioni regolari.<\/p>\n<p>Alcuni metacaratteri, come:<\/p>\n<ul>\n<li><code>+<\/code><\/li>\n<li><code>?<\/code><\/li>\n<li><code>|<\/code><\/li>\n<li><code>()<\/code><\/li>\n<\/ul>\n<p>non hanno un significato speciale e devono essere preceduti dal carattere di escape <code>\\<\/code>.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>grep 'colou\\?r' file.txt\r\n<\/code><\/pre>\n<p>oppure:<\/p>\n<pre><code>grep 'a\\+b' file.txt\r\n<\/code><\/pre>\n<hr \/>\n<h3>Extended Regular Expressions (ERE)<\/h3>\n<p>Le <strong>Extended Regular Expressions<\/strong> estendono la sintassi BRE introducendo metacaratteri aggiuntivi e rendendo le espressioni pi\u00f9 semplici da leggere.<\/p>\n<p>Con ERE i metacaratteri:<\/p>\n<ul>\n<li><code>+<\/code><\/li>\n<li><code>?<\/code><\/li>\n<li><code>|<\/code><\/li>\n<li><code>()<\/code><\/li>\n<\/ul>\n<p>sono interpretati direttamente e non richiedono il carattere di escape.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>grep -E 'colou?r' file.txt\r\n<\/code><\/pre>\n<p>oppure:<\/p>\n<pre><code>grep -E 'a+b' file.txt\r\n<\/code><\/pre>\n<p>L&#8217;opzione <code>-E<\/code> indica a <code>grep<\/code> di utilizzare le Extended Regular Expressions.<\/p>\n<hr \/>\n<h3>BRE ed ERE a confronto<\/h3>\n<table>\n<thead>\n<tr>\n<th>Caratteristica<\/th>\n<th>BRE<\/th>\n<th>ERE<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>+<\/code><\/td>\n<td><code>\\+<\/code><\/td>\n<td><code>+<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>?<\/code><\/td>\n<td><code>\\?<\/code><\/td>\n<td><code>?<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>|<\/code><\/td>\n<td><code>\\|<\/code><\/td>\n<td><code>|<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>()<\/code><\/td>\n<td><code>\\( \\)<\/code><\/td>\n<td><code>()<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h3>Quando utilizzare BRE ed ERE?<\/h3>\n<p>Nella maggior parte dei casi:<\/p>\n<ul>\n<li><code>grep<\/code> utilizza le <strong>BRE<\/strong>;<\/li>\n<li><code>grep -E<\/code> utilizza le <strong>ERE<\/strong>.<\/li>\n<\/ul>\n<p>Le ERE sono generalmente pi\u00f9 leggibili perch\u00e9 richiedono meno caratteri di escape.<\/p>\n<blockquote><p><strong>\ud83d\udccc Da ricordare<\/strong> Le Extended Regular Expressions non sostituiscono le Basic Regular Expressions: rappresentano semplicemente una sintassi pi\u00f9 estesa e comoda da utilizzare.<\/p><\/blockquote>\n<hr \/>\n<h3>Best Practice<\/h3>\n<p>Quando lavori con pattern complessi, preferisci <code>grep -E<\/code>. Le espressioni risultano pi\u00f9 leggibili e richiedono meno caratteri di escape, riducendo la possibilit\u00e0 di errori.<\/p>\n<hr \/>\n<h3>Riepilogo<\/h3>\n<ul>\n<li>Linux supporta le <strong>Basic Regular Expressions (BRE)<\/strong> e le <strong>Extended Regular Expressions (ERE)<\/strong>.<\/li>\n<li><code>grep<\/code> utilizza BRE per impostazione predefinita.<\/li>\n<li><code>grep -E<\/code> abilita le Extended Regular Expressions.<\/li>\n<li>Nelle BRE alcuni metacaratteri devono essere preceduti dal carattere <code>\\<\/code>.<\/li>\n<li>Le ERE rendono le espressioni regolari pi\u00f9 semplici da leggere e scrivere.<\/li>\n<\/ul>\n<h2>103.7.3 Concetti fondamentali delle espressioni regolari<\/h2>\n<p>Le espressioni regolari sono costruite utilizzando una serie di <strong>metacaratteri<\/strong>, cio\u00e8 simboli che assumono un significato particolare all&#8217;interno di un pattern di ricerca. Comprendere questi elementi \u00e8 fondamentale per creare espressioni regolari efficaci e interpretare correttamente i risultati ottenuti.<\/p>\n<p>In questa sezione analizzeremo i concetti pi\u00f9 importanti: caratteri speciali, classi di caratteri, quantificatori e ancore.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Exam Tip<\/strong> Per l&#8217;esame LPIC-1 \u00e8 fondamentale conoscere il significato dei principali metacaratteri, delle classi di caratteri, dei quantificatori e delle ancore <code>^<\/code> e <code>$<\/code>.<\/p><\/blockquote>\n<hr \/>\n<h3>Caratteri speciali (Metacaratteri)<\/h3>\n<p>I metacaratteri sono simboli che assumono un significato speciale all&#8217;interno di una regex.<\/p>\n<p>Uno dei pi\u00f9 utilizzati \u00e8 il punto (<code>.<\/code>), che rappresenta un qualsiasi carattere singolo.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>a.c\r\n<\/code><\/pre>\n<p>corrisponde a stringhe come:<\/p>\n<pre><code>abc\r\naxc\r\na1c\r\n<\/code><\/pre>\n<p>ma non a:<\/p>\n<pre><code>ac\r\nabbc\r\n<\/code><\/pre>\n<p>Un altro metacarattere molto importante \u00e8 l&#8217;asterisco:<\/p>\n<pre><code>*\r\n<\/code><\/pre>\n<p>che indica <strong>zero o pi\u00f9 ripetizioni<\/strong> del carattere che lo precede.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>ab*\r\n<\/code><\/pre>\n<p>corrisponde a:<\/p>\n<pre><code>a\r\nab\r\nabb\r\nabbb\r\n<\/code><\/pre>\n<hr \/>\n<h3>Classi di caratteri<\/h3>\n<p>Le <strong>classi di caratteri<\/strong> sono racchiuse tra parentesi quadre:<\/p>\n<pre><code>[ ]\r\n<\/code><\/pre>\n<p>e consentono di indicare che \u00e8 accettato uno qualsiasi dei caratteri contenuti al loro interno.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>[aeiou]\r\n<\/code><\/pre>\n<p>corrisponde a qualsiasi vocale.<\/p>\n<p>\u00c8 possibile definire anche intervalli:<\/p>\n<pre><code>[a-z]\r\n<\/code><\/pre>\n<p>qualsiasi lettera minuscola.<\/p>\n<pre><code>[A-Z]\r\n<\/code><\/pre>\n<p>qualsiasi lettera maiuscola.<\/p>\n<pre><code>[0-9]\r\n<\/code><\/pre>\n<p>qualsiasi cifra.<\/p>\n<p>Le classi possono essere combinate:<\/p>\n<pre><code>[A-Za-z0-9]\r\n<\/code><\/pre>\n<p>corrisponde a qualsiasi carattere alfanumerico.<\/p>\n<hr \/>\n<h3>Quantificatori<\/h3>\n<p>I <strong>quantificatori<\/strong> specificano quante volte un carattere o un gruppo pu\u00f2 comparire.<\/p>\n<p>Uno dei pi\u00f9 utilizzati \u00e8:<\/p>\n<pre><code>{n,m}\r\n<\/code><\/pre>\n<p>che indica:<\/p>\n<ul>\n<li>almeno <strong>n<\/strong> occorrenze;<\/li>\n<li>al massimo <strong>m<\/strong> occorrenze.<\/li>\n<\/ul>\n<p>Ad esempio:<\/p>\n<pre><code>[0-9]{2,4}\r\n<\/code><\/pre>\n<p>corrisponde a numeri composti da due, tre oppure quattro cifre.<\/p>\n<p>Altri quantificatori comuni sono:<\/p>\n<table>\n<thead>\n<tr>\n<th>Quantificatore<\/th>\n<th>Significato<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>*<\/code><\/td>\n<td>Zero o pi\u00f9 occorrenze.<\/td>\n<\/tr>\n<tr>\n<td><code>+<\/code><\/td>\n<td>Una o pi\u00f9 occorrenze.<\/td>\n<\/tr>\n<tr>\n<td><code>?<\/code><\/td>\n<td>Zero oppure una occorrenza.<\/td>\n<\/tr>\n<tr>\n<td><code>{n}<\/code><\/td>\n<td>Esattamente n occorrenze.<\/td>\n<\/tr>\n<tr>\n<td><code>{n,m}<\/code><\/td>\n<td>Da n a m occorrenze.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h3>Ancore<\/h3>\n<p>Le <strong>ancore<\/strong> non rappresentano caratteri, ma posizioni all&#8217;interno della riga.<\/p>\n<p>Le principali sono:<\/p>\n<table>\n<thead>\n<tr>\n<th>Ancora<\/th>\n<th>Significato<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>^<\/code><\/td>\n<td>Inizio della riga.<\/td>\n<\/tr>\n<tr>\n<td><code>$<\/code><\/td>\n<td>Fine della riga.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Ad esempio:<\/p>\n<pre><code>^Linux\r\n<\/code><\/pre>\n<p>trova solamente le righe che iniziano con la parola &#8220;Linux&#8221;.<\/p>\n<p>Mentre:<\/p>\n<pre><code>server$\r\n<\/code><\/pre>\n<p>trova esclusivamente le righe che terminano con la parola &#8220;server&#8221;.<\/p>\n<p>Combinando entrambe le ancore:<\/p>\n<pre><code>^Linux$\r\n<\/code><\/pre>\n<p>si individua una riga contenente esclusivamente la parola &#8220;Linux&#8221;.<\/p>\n<hr \/>\n<h3>Riepilogo dei principali metacaratteri<\/h3>\n<table>\n<thead>\n<tr>\n<th>Simbolo<\/th>\n<th>Significato<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>.<\/code><\/td>\n<td>Qualsiasi carattere singolo.<\/td>\n<\/tr>\n<tr>\n<td><code>*<\/code><\/td>\n<td>Zero o pi\u00f9 occorrenze.<\/td>\n<\/tr>\n<tr>\n<td><code>+<\/code><\/td>\n<td>Una o pi\u00f9 occorrenze.<\/td>\n<\/tr>\n<tr>\n<td><code>?<\/code><\/td>\n<td>Zero oppure una occorrenza.<\/td>\n<\/tr>\n<tr>\n<td><code>[]<\/code><\/td>\n<td>Classe di caratteri.<\/td>\n<\/tr>\n<tr>\n<td><code>{n,m}<\/code><\/td>\n<td>Intervallo di ripetizione.<\/td>\n<\/tr>\n<tr>\n<td><code>^<\/code><\/td>\n<td>Inizio della riga.<\/td>\n<\/tr>\n<tr>\n<td><code>$<\/code><\/td>\n<td>Fine della riga.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote><p><strong>\ud83d\udccc Da ricordare<\/strong> I metacaratteri modificano il significato della ricerca. Se si desidera cercare uno di questi simboli come semplice carattere, \u00e8 generalmente necessario precederlo con il carattere di escape <code>\\<\/code>.<\/p><\/blockquote>\n<hr \/>\n<h3>Best Practice<\/h3>\n<p>Quando costruisci una regex complessa, procedi per piccoli passi. Inizia con un pattern semplice e aggiungi progressivamente classi di caratteri, quantificatori e ancore, verificando ogni volta che il risultato ottenuto sia quello desiderato.<\/p>\n<hr \/>\n<h3>Riepilogo<\/h3>\n<ul>\n<li>I metacaratteri permettono di definire modelli di ricerca avanzati.<\/li>\n<li>Le classi di caratteri (<code>[]<\/code>) consentono di selezionare uno tra pi\u00f9 caratteri possibili.<\/li>\n<li>I quantificatori definiscono il numero di occorrenze di un elemento.<\/li>\n<li>Le ancore <code>^<\/code> e <code>$<\/code> identificano rispettivamente l&#8217;inizio e la fine della riga.<\/li>\n<li>La combinazione di questi elementi consente di costruire espressioni regolari molto potenti.<\/li>\n<\/ul>\n<h2>103.7.4 Utilizzare gli strumenti che supportano le espressioni regolari<\/h2>\n<p>Le espressioni regolari diventano realmente utili quando vengono utilizzate insieme agli strumenti della riga di comando. Linux mette a disposizione numerose utility in grado di interpretare pattern di ricerca, filtrare informazioni e modificare automaticamente il contenuto dei file.<\/p>\n<p>Tra gli strumenti pi\u00f9 importanti troviamo <code>grep<\/code>, <code>egrep<\/code>, <code>fgrep<\/code>, <code>sed<\/code> e la pagina di manuale <code>regex(7)<\/code>, che descrive in dettaglio il funzionamento delle espressioni regolari nei sistemi Linux.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Exam Tip<\/strong> Per l&#8217;esame LPIC-1 \u00e8 importante conoscere le differenze tra <code>grep<\/code>, <code>grep -E<\/code>, <code>grep -F<\/code> e il comando <code>sed<\/code>, oltre a sapere dove reperire la documentazione ufficiale delle espressioni regolari.<\/p><\/blockquote>\n<hr \/>\n<h3>Ricercare testo con <code>grep<\/code><\/h3>\n<p>Il comando <code>grep<\/code> (<strong>Global Regular Expression Print<\/strong>) ricerca le righe di un file che corrispondono a un determinato pattern.<\/p>\n<p>La sintassi generale \u00e8:<\/p>\n<pre><code>grep 'pattern' filename\r\n<\/code><\/pre>\n<p>Ad esempio:<\/p>\n<pre><code>grep 'error' logfile.txt\r\n<\/code><\/pre>\n<p>Il comando visualizza tutte le righe contenenti la parola <code>error<\/code>.<\/p>\n<p>Per impostazione predefinita, <code>grep<\/code> utilizza le <strong>Basic Regular Expressions (BRE)<\/strong>.<\/p>\n<hr \/>\n<h3>Utilizzare le Extended Regular Expressions con <code>grep -E<\/code><\/h3>\n<p>Le <strong>Extended Regular Expressions (ERE)<\/strong> possono essere abilitate mediante l&#8217;opzione:<\/p>\n<pre><code>grep -E 'pattern' filename\r\n<\/code><\/pre>\n<p>Storicamente era disponibile anche il comando:<\/p>\n<pre><code>egrep 'pattern' filename\r\n<\/code><\/pre>\n<p>Oggi <code>egrep<\/code> \u00e8 considerato un alias di <code>grep -E<\/code> e, nei sistemi moderni, \u00e8 preferibile utilizzare direttamente <code>grep -E<\/code>.<\/p>\n<p>Le ERE consentono di utilizzare metacaratteri come <code>+<\/code>, <code>?<\/code>, <code>|<\/code> e <code>()<\/code> senza doverli precedere con il carattere di escape.<\/p>\n<hr \/>\n<h3>Ricercare stringhe letterali con <code>grep -F<\/code><\/h3>\n<p>Quando non \u00e8 necessario utilizzare le espressioni regolari, \u00e8 possibile effettuare una semplice ricerca testuale mediante:<\/p>\n<pre><code>grep -F 'string' filename\r\n<\/code><\/pre>\n<p>Storicamente questo comportamento era disponibile attraverso il comando:<\/p>\n<pre><code>fgrep 'string' filename\r\n<\/code><\/pre>\n<p>Anche in questo caso, nei sistemi Linux moderni \u00e8 consigliabile utilizzare direttamente <code>grep -F<\/code>.<\/p>\n<p>Questo comando interpreta il pattern come una normale stringa, ignorando qualsiasi metacarattere.<\/p>\n<hr \/>\n<h3>Modificare il testo con <code>sed<\/code><\/h3>\n<p>Il comando <code>sed<\/code> (<strong>Stream Editor<\/strong>) permette di filtrare e trasformare il testo utilizzando le espressioni regolari.<\/p>\n<p>Uno degli utilizzi pi\u00f9 comuni consiste nella sostituzione di testo.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>sed 's\/pattern\/replacement\/g' filename\r\n<\/code><\/pre>\n<p>dove:<\/p>\n<ul>\n<li><code>s<\/code> indica una sostituzione;<\/li>\n<li><code>pattern<\/code> rappresenta il testo da cercare;<\/li>\n<li><code>replacement<\/code> \u00e8 il testo sostitutivo;<\/li>\n<li><code>g<\/code> applica la sostituzione a tutte le occorrenze presenti nella riga.<\/li>\n<\/ul>\n<p>Ad esempio:<\/p>\n<pre><code>sed 's\/Linux\/GNU\\\/Linux\/g' file.txt\r\n<\/code><\/pre>\n<p>sostituisce tutte le occorrenze della parola &#8220;Linux&#8221; con &#8220;GNU\/Linux&#8221;.<\/p>\n<hr \/>\n<h3>Consultare la documentazione<\/h3>\n<p>Linux mette a disposizione una pagina di manuale dedicata alle espressioni regolari.<\/p>\n<p>\u00c8 possibile consultarla con:<\/p>\n<pre><code>man 7 regex\r\n<\/code><\/pre>\n<p>Questa documentazione descrive in dettaglio:<\/p>\n<ul>\n<li>la sintassi delle regex;<\/li>\n<li>i metacaratteri disponibili;<\/li>\n<li>le differenze tra BRE ed ERE;<\/li>\n<li>il comportamento delle implementazioni POSIX.<\/li>\n<\/ul>\n<hr \/>\n<h3>Confronto tra gli strumenti<\/h3>\n<table>\n<thead>\n<tr>\n<th>Comando<\/th>\n<th>Funzione<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>grep<\/code><\/td>\n<td>Ricerca utilizzando le Basic Regular Expressions (BRE).<\/td>\n<\/tr>\n<tr>\n<td><code>grep -E<\/code><\/td>\n<td>Ricerca utilizzando le Extended Regular Expressions (ERE).<\/td>\n<\/tr>\n<tr>\n<td><code>grep -F<\/code><\/td>\n<td>Ricerca stringhe letterali senza interpretare metacaratteri.<\/td>\n<\/tr>\n<tr>\n<td><code>sed<\/code><\/td>\n<td>Filtra e modifica testo mediante espressioni regolari.<\/td>\n<\/tr>\n<tr>\n<td><code>man 7 regex<\/code><\/td>\n<td>Documentazione ufficiale delle espressioni regolari POSIX.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote><p><strong>\ud83d\udccc Da ricordare<\/strong> Nei sistemi Linux moderni i comandi <code>egrep<\/code> e <code>fgrep<\/code> sono mantenuti principalmente per compatibilit\u00e0. \u00c8 preferibile utilizzare rispettivamente <code>grep -E<\/code> e <code>grep -F<\/code>.<\/p><\/blockquote>\n<hr \/>\n<h3>Best Practice<\/h3>\n<p>Utilizza <code>grep<\/code> per le ricerche semplici, <code>grep -E<\/code> quando hai bisogno delle espressioni regolari estese e <code>grep -F<\/code> quando desideri cercare testo letterale senza interpretare i metacaratteri. Prima di costruire pattern complessi, consulta la documentazione disponibile tramite <code>man 7 regex<\/code>.<\/p>\n<hr \/>\n<h3>Riepilogo<\/h3>\n<ul>\n<li><code>grep<\/code> utilizza le Basic Regular Expressions.<\/li>\n<li><code>grep -E<\/code> abilita le Extended Regular Expressions.<\/li>\n<li><code>grep -F<\/code> ricerca semplici stringhe letterali.<\/li>\n<li><code>sed<\/code> permette di modificare il testo utilizzando le espressioni regolari.<\/li>\n<li><code>man 7 regex<\/code> fornisce la documentazione ufficiale delle regex nei sistemi Linux.<\/li>\n<\/ul>\n<h2>\ud83d\udcda Riepilogo della lezione<\/h2>\n<p>In questa lezione hai scoperto il funzionamento delle <strong>espressioni regolari<\/strong> (Regular Expressions), uno degli strumenti pi\u00f9 potenti per la ricerca e l&#8217;elaborazione del testo nei sistemi Linux. Hai imparato a costruire semplici pattern di ricerca, a utilizzare i principali metacaratteri e a distinguere tra espressioni regolari di base (BRE) ed estese (ERE).<\/p>\n<p>Hai inoltre visto come strumenti come <code>grep<\/code> e <code>sed<\/code> sfruttano le regex per individuare, filtrare e modificare informazioni contenute nei file di testo.<\/p>\n<h3>Concetti principali<\/h3>\n<ul>\n<li>Hai compreso che una <strong>espressione regolare<\/strong> descrive un modello di ricerca e non una stringa specifica.<\/li>\n<li>Hai imparato a utilizzare i principali metacaratteri come <code>.<\/code>, <code>*<\/code>, <code>+<\/code>, <code>?<\/code>, <code>[]<\/code>, <code>^<\/code> e <code>$<\/code>.<\/li>\n<li>Hai scoperto il funzionamento delle classi di caratteri e dei quantificatori.<\/li>\n<li>Hai distinto le <strong>Basic Regular Expressions (BRE)<\/strong> dalle <strong>Extended Regular Expressions (ERE)<\/strong>.<\/li>\n<li>Hai utilizzato <code>grep<\/code>, <code>grep -E<\/code>, <code>grep -F<\/code> e <code>sed<\/code> per effettuare ricerche e trasformazioni di testo.<\/li>\n<li>Hai imparato a consultare la documentazione ufficiale mediante <code>man 7 regex<\/code>.<\/li>\n<\/ul>\n<blockquote><p><strong>\ud83c\udfaf Obiettivo raggiunto<\/strong> Al termine di questa lezione sei in grado di utilizzare le espressioni regolari per ricercare informazioni nei file di testo e comprendere i pattern utilizzati dai principali strumenti di amministrazione dei sistemi Linux.<\/p><\/blockquote>\n<h3>Metacaratteri principali<\/h3>\n<table>\n<thead>\n<tr>\n<th>Simbolo<\/th>\n<th>Significato<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>.<\/code><\/td>\n<td>Qualsiasi carattere singolo.<\/td>\n<\/tr>\n<tr>\n<td><code>*<\/code><\/td>\n<td>Zero o pi\u00f9 occorrenze.<\/td>\n<\/tr>\n<tr>\n<td><code>+<\/code><\/td>\n<td>Una o pi\u00f9 occorrenze (ERE).<\/td>\n<\/tr>\n<tr>\n<td><code>?<\/code><\/td>\n<td>Zero oppure una occorrenza (ERE).<\/td>\n<\/tr>\n<tr>\n<td><code>[]<\/code><\/td>\n<td>Classe di caratteri.<\/td>\n<\/tr>\n<tr>\n<td><code>{n,m}<\/code><\/td>\n<td>Intervallo di ripetizione.<\/td>\n<\/tr>\n<tr>\n<td><code>^<\/code><\/td>\n<td>Inizio della riga.<\/td>\n<\/tr>\n<tr>\n<td><code>$<\/code><\/td>\n<td>Fine della riga.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Comandi da ricordare<\/h3>\n<table>\n<thead>\n<tr>\n<th>Comando<\/th>\n<th>Descrizione<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>grep<\/code><\/td>\n<td>Ricerca testo utilizzando le Basic Regular Expressions.<\/td>\n<\/tr>\n<tr>\n<td><code>grep -E<\/code><\/td>\n<td>Ricerca utilizzando le Extended Regular Expressions.<\/td>\n<\/tr>\n<tr>\n<td><code>grep -F<\/code><\/td>\n<td>Ricerca stringhe letterali senza interpretare metacaratteri.<\/td>\n<\/tr>\n<tr>\n<td><code>sed<\/code><\/td>\n<td>Filtra e modifica testo mediante espressioni regolari.<\/td>\n<\/tr>\n<tr>\n<td><code>man 7 regex<\/code><\/td>\n<td>Consulta la documentazione ufficiale delle regex POSIX.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote><p><strong>\ud83d\udca1 Preparazione all&#8217;esame LPIC-1<\/strong> Prima di proseguire assicurati di conoscere il significato dei principali metacaratteri, la differenza tra BRE ed ERE e il funzionamento dei comandi <code>grep<\/code>, <code>grep -E<\/code> e <code>sed<\/code>. Le espressioni regolari rappresentano uno degli argomenti pi\u00f9 ricorrenti dell&#8217;esame LPIC-1.<\/p><\/blockquote>\n<hr \/>\n<h2>\u27a1\ufe0f Prossima lezione<\/h2>\n<p>Nella prossima lezione (<strong>103.8 Modificare file di testo di base<\/strong>) imparerai a utilizzare gli editor di testo da terminale pi\u00f9 diffusi, con particolare attenzione a <code>vi<\/code> e <code>vim<\/code>. Scoprirai come creare, modificare e salvare file direttamente dalla riga di comando, una competenza indispensabile per qualsiasi amministratore Linux.<\/p>\n<blockquote><p><strong>\ud83d\udcd6 Materiale di approfondimento<\/strong> Consulta il PDF allegato alla lezione per esercitarti con laboratori guidati, scenari realistici e quiz di autovalutazione.<\/p><\/blockquote>\n","protected":false},"comment_status":"open","ping_status":"closed","template":"","class_list":["post-3641","lesson","type-lesson","status-publish","has-post-thumbnail","hentry"],"uagb_featured_image_src":[],"uagb_author_info":{"display_name":"Rootmail Academy","author_link":"https:\/\/rootmail.it\/en\/author\/"},"uagb_comment_info":0,"uagb_excerpt":"103.7 Ricercare testo nei file utilizzando le espressioni regolari Le espressioni regolari (in inglese Regular Expressions, spesso abbreviate in regex) sono uno degli strumenti pi\u00f9 potenti disponibili nei sistemi Linux per la ricerca e l&#8217;elaborazione del testo. Consentono di descrivere modelli di ricerca attraverso una sintassi compatta, permettendo di individuare parole, numeri, indirizzi, percorsi e&hellip;","_links":{"self":[{"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/lesson\/3641","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/lesson"}],"about":[{"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/types\/lesson"}],"replies":[{"embeddable":true,"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/comments?post=3641"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/media\/3679"}],"wp:attachment":[{"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/media?parent=3641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}