J'exécute plusieurs commandes de substitution comme noyau d'une coloriser script pour maven . L'un des sed
utilise une expression régulière qui fonctionne trouver dans le shell comme discuté ici . L'implémentation actuelle (qui ne fonctionne pas) se trouve à l'adresse suivante aquí .
Lorsque j'inclus une des variantes de la commande dans le script un comportement différent se produit :
Variante 1 :
$ sed -re "s/([a-zA-Z0-9./\\ :-]+)/\1/g"
Adapté au script :
-re "s/WARNING: ([a-zA-Z0-9./\\ :-]+)/${warn}WARNING: \1${c_end}/g" \
Erreur : Le shell affiche les mêmes informations que si je tapais $ sed
. Étrange ! ?
Variante 2 :
$ sed -e "s/\([a-zA-Z0-9./\\ :-]\+\)/\1/g"
Adapté au script :
-e "s/WARNING: \([a-zA-Z0-9./\\ :-]\+\)/${warn}WARNING: \1${c_end}/g" \
Erreur :
sed : -e expression #7, char 59 : référence invalide \1 sur le RHS de la commande `s'.