J'ai des difficultés à faire en sorte que sed remplace une chaîne de texte dans un fichier XML, alors que je n'ai aucun problème à utiliser grep pour trouver cette même chaîne. Comme la nouvelle et l'ancienne chaîne à remplacer contiennent beaucoup de caractères spéciaux, j'ai pensé qu'il valait mieux les stocker dans des variables plutôt que d'utiliser une multitude de barres obliques inversées :
OLD_STRING='<property name="webServiceHost">${jboss.bind.address}</property>'
NEW_STRING='<!--<property name="webServiceHost">${jboss.bind.address}</property>-->'
Les chaînes de caractères semblent être stockées comme prévu :
$ echo $OLD_STRING; echo $NEW_STRING
<property name="webServiceHost">${jboss.bind.address}</property>
<!--<property name="webServiceHost">${jboss.bind.address}</property>-->
Le grep'ing confirme que l'ancienne chaîne est présente dans le fichier XML :
$ grep "$OLD_STRING" jboss-beans.xml
<property name="webServiceHost">${jboss.bind.address}</property>
Mais la commande sed suivante ne produit aucun résultat :
sed -i 's/"$OLD_STRING"/"$NEW_STRING"/g' jboss-beans.xml
Une idée de ce que j'ai manqué ici ?