Utilizzare le espressioni regolari in Bash

Le espressioni regolari (regex) sono uno strumento potente per il matching e la manipolazione di stringhe. In Bash, possono essere utilizzate in diversi contesti, come i comandi [[ ]], grep, sed e awk. In questo articolo, ci concentreremo sull'uso delle regex all'interno degli script Bash.

1. Matching con [[ ]]

Bash supporta il matching con regex usando la sintassi [[ string =~ regex ]]. Ecco un esempio:

#!/bin/bash

read -p "Inserisci una stringa: " input

if [[ $input =~ ^[A-Z][a-z]+$ ]]; then
  echo "La stringa inizia con una maiuscola ed è seguita da lettere minuscole."
else
  echo "La stringa non corrisponde al pattern."
fi

2. Utilizzare grep

grep è un comando classico per cercare testo usando regex. Per usare espressioni regolari estese, si può usare l'opzione -E:

grep -E "[0-9]{3}-[0-9]{2}-[0-9]{4}" file.txt

Questo comando cerca pattern che corrispondono a un formato tipo SSN (Social Security Number).

3. Usare sed per sostituzioni

sed è utile per modificare testo in modo non interattivo. Esempio:

echo "La data è 2025-07-22" | sed -E 's/[0-9]{4}-[0-9]{2}-[0-9]{2}/[DATA]/'

Risultato:

La data è [DATA]

4. Uso avanzato con awk

awk è perfetto per l'elaborazione di colonne di testo:

awk '/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/' utenti.txt

Questo comando stampa le righe contenenti indirizzi email validi.

Conclusioni

Le espressioni regolari in Bash offrono una grande flessibilità per il filtraggio e la manipolazione di testo. Con un po' di pratica, diventeranno uno strumento indispensabile nella tua toolkit di scripting.

Torna su