Tutorial sulle espressioni regolari di Linux: esempio di grep regex

โšก Riepilogo intelligente

Le espressioni regolari di Linux sono sequenze di caratteri speciali che cercano dati e corrispondono a modelli complessi utilizzando strumenti come grep, sed e vi, impiegando forme di base, a intervalli, estese e con parentesi graffe per filtrare il testo con precisione.

  • ๐Ÿ”Ž Cosa sono: Le espressioni regolari, abbreviate in regexp o regex, descrivono modelli di testo per la ricerca e la corrispondenza.
  • ๐Ÿงฉ Set base: Simboli come . ^ $ * e \ fungono da ancora, ripetizione e caratteri di escape in uno schema.
  • ๐Ÿ”ข Intervallo: Le parentesi graffe come {n} e {n,m} controllano quante volte si ripete il carattere precedente.
  • โž• estesa: Con grep -E, \+ e \? corrispondono a una o piรน occorrenze e a zero o una occorrenza di un carattere.
  • ๐Ÿงต Espansione del tutore: Le parentesi graffe generano piรน stringhe da una sequenza o da un elenco separato da virgole.
  • ๏ธ Dove viene utilizzato: Strumenti come grep, sed, tr e vi si basano sulle espressioni regolari per filtrare il testo.
  • ๐Ÿค– Aiuto tramite intelligenza artificiale: Gli assistenti basati sull'intelligenza artificiale e GitHub Copilot possono generare, spiegare ed eseguire il debug di pattern regex in modo rapido.

Espressioni regolari in Linux con grep: esempi di base, a intervalli ed estesi.

Le espressioni regolari sono una delle caratteristiche piรน potenti di Linux Strumenti di testo che consentono di trovare, filtrare e trasformare i dati con modelli compatti. Questa pagina illustra le forme base, a intervalli ed estesa, oltre all'espansione delle parentesi graffe, con esempi pratici di grep.

Cosa sono le espressioni regolari di Linux?

Le espressioni regolari di Linux sono caratteri speciali che aiutano a cercare dati e a trovare corrispondenze con modelli complessi. Le espressioni regolari vengono abbreviate in 'regexp' o 'regex'. Sono utilizzate in molti programmi Linux come grep, bash, rename, sed e altro ancora.

Tipi di espressioni regolari

Per facilitare la comprensione, analizziamo uno per uno i diversi tipi di espressioni regolari. Questa pagina tratta le espressioni regolari di base, a intervalli ed estese, e si conclude con l'espansione delle parentesi graffe.

Espressioni regolari di base

Alcuni dei comandi comunemente usati che funzionano con le espressioni regolari sono tr, sed, vie grep. La tabella seguente elenca alcune delle espressioni regolari di base.

Simbolo Descrizione
. Sostituisce qualsiasi carattere
^ Corrisponde all'inizio di una stringa
$ Corrisponde all'estremitร  di una stringa
* Corrisponde zero o piรน volte al carattere precedente
\ Rappresenta personaggi speciali
() Raggruppa le espressioni regolari
? Corrisponde esattamente a un carattere

Vediamo un esempio. Innanzitutto, esegui il comando `cat sample` per visualizzare il contenuto di un file esistente, come mostrato di seguito.

Esempio di comando cat che visualizza il contenuto di un file esistente nel terminale

Successivamente, cerca il contenuto contenente la lettera 'a'. Lo screenshot qui sotto mostra grep che restituisce tutte le righe che includono una 'a'.

grep cerca nel file di esempio le righe che contengono la lettera a

Il simbolo di accento circonflesso '^' corrisponde all'inizio di una stringa. L'esempio seguente cerca contenuti che iniziano con la lettera 'a'.

grep con un'ancora a forma di accento circonflesso che corrisponde solo alle righe che iniziano con la lettera a

Vengono filtrate solo le righe che iniziano con il carattere specificato. Le righe che non contengono il carattere 'a' all'inizio vengono ignorate.

Vediamo un altro esempio. Lo screenshot qui sotto mostra nuovamente il contenuto del file di esempio prima del filtro applicato in base alla fine di una riga.

Contenuto del file di esempio mostrato prima del filtraggio delle righe che terminano con la lettera t

Seleziona solo le righe che terminano con la lettera 't' utilizzando il simbolo di ancoraggio '$', come mostrato di seguito.

grep con un'ancora dollaro selezionando solo le righe che terminano con la lettera t

Intervallo Espressioni regolari

Queste espressioni specificano il numero di occorrenze di un carattere in una stringa. Sono elencate di seguito.

Espressione Descrizione
{non} Corrisponde esattamente al carattere precedente che appare 'n' volte
{m} Corrisponde al carattere precedente che appare 'n' volte ma non piรน di m
{N, } Corrisponde al carattere precedente solo quando appare "n" volte o piรน

Ad esempio, filtra tutte le righe che contengono il carattere 'p'. Lo screenshot qui sotto mostra le righe corrispondenti.

grep filtra il file di esempio per le righe che contengono il carattere p

Ora verifica che il carattere 'p' compaia esattamente due volte in una stringa, una dopo l'altra. La sintassi per farlo รจ:

cat sample | grep -E p\{2}

Il risultato della partita a intervalli รจ mostrato di seguito.

grep -E espressione di intervallo corrispondente al carattere p che appare esattamente due volte

Nota: devi aggiungere -E con queste espressioni regolari.

Espressioni regolari estese

Queste espressioni regolari combinano piรน di un'espressione. Alcune di esse sono:

Espressione Descrizione
\+ Corrisponde a una o piรน occorrenze del carattere precedente
\? Corrisponde a zero o una occorrenza del carattere precedente

Ad esempio, cerca tutte le occorrenze del carattere 't'. Lo screenshot qui sotto mostra il risultato.

grep cerca nel file di esempio tutte le righe che contengono il carattere t

Supponiamo di voler filtrare le righe in cui il carattere 'a' precede il carattere 't'. รˆ possibile utilizzare un comando come quello riportato di seguito:

cat sample|grep "a\+t"

Il risultato รจ mostrato nella seguente schermata.

grep espressione estesa corrispondente a uno o piรน caratteri a seguiti da t

Espansione del tutore

La sintassi per l'espansione delle parentesi graffe รจ una sequenza o un elenco di elementi separati da virgole racchiusi tra parentesi graffe '{}'. Gli elementi iniziale e finale di una sequenza sono separati da due punti '..'.

Alcuni esempi sono riportati di seguito.

comando echo che utilizza l'espansione delle parentesi graffe per generare piรน stringhe da una sequenza e un elenco

Negli esempi precedenti, il comando echo crea stringhe utilizzando l'espansione delle parentesi graffe, producendo piรน stringhe a partire da un singolo schema.

DOMANDE FREQUENTI

grep utilizza di default espressioni regolari di base. egrep abilita espressioni estese (equivalente a grep -E), mentre fgrep trova corrispondenze con stringhe fisse senza espressioni regolari (grep -F). Le versioni moderne di GNU grep contrassegnano egrep e fgrep come deprecati, quindi รจ preferibile utilizzare grep -E e grep -F.

Le classi di caratteri corrispondono a una categoria di caratteri. Le espressioni tra parentesi quadre come [az] corrispondono a un intervallo, mentre le classi POSIX come [[:alpha:]], [[:digit:]] e [[:space:]] corrispondono a lettere, numeri e spazi bianchi. Mantengono i modelli leggibili e portabili in diverse lingue.

Aggiungi l'opzione -i, ad esempio grep -i โ€œhelloโ€ sample. Questo corrisponde a Hello, HELLO e hello indifferentemente. Senza -i, le espressioni regolari distinguono tra maiuscole e minuscole, quindi una lettera maiuscola e la sua forma minuscola vengono trattate come due caratteri diversi.

I caratteri jolly della shell (globbing) espandono i nomi dei file, dove * indica qualsiasi carattere e ? indica un singolo carattere. Le espressioni regolari corrispondono al testo all'interno dei file, dove * indica zero o piรน occorrenze del carattere precedente. Gli stessi simboli hanno significati diversi a seconda del contesto.

Utilizza l'opzione -o, ad esempio grep -o โ€œa\+tโ€ sample. Invece di stampare l'intera riga, grep stampa solo la parte che corrisponde al modello, una corrispondenza per riga. รˆ utile per esempiotracvalori quali indirizzi email o numeri di telefono.

Utilizza l'alternanza con il simbolo della barra verticale. In modalitร  estesa, `grep -E โ€œcat|dogโ€ sample` trova le righe contenenti `cat` o `dog`. In modalitร  base, devi utilizzare l'escape, ad esempio `grep โ€œcat\|dogโ€ sample`. L'alternanza consente a un singolo comando di cercare piรน pattern contemporaneamente.

Gli assistenti basati sull'intelligenza artificiale possono trasformare una descrizione in linguaggio naturale in un'espressione regolare funzionante, spiegare la funzione di uno schema criptico e suggerire soluzioni in caso di errore di corrispondenza. Gli strumenti di apprendimento automatico rilevano inoltre schemi ricorrenti in file di log di grandi dimensioni, un'operazione che sarebbe tediosa da eseguire manualmente.

Sรฌ. Le serrature scorrevoli portatili e i catenacci a superficie possono essere usati per mettere in sicurezza una porta a scomparsa dall'esterno. Alcuni kit con catena di sicurezza consentono anche il bloccaggio esterno con chiave o manopola girevole. Copilota GitHub Suggerisce comandi grep ed espressioni regolari direttamente da un commento o da un pattern parziale mentre digiti. Velocizza la scrittura di espressioni complesse, anche se รจ consigliabile testare qualsiasi pattern generato su dati di esempio reali prima di farvi affidamento.

Riassumi questo post con: