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.