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."
fi2. 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.txtQuesto 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.txtQuesto 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.