web-dev-qa-db-fra.com

sed recherche et remplace par une variable contenant une barre oblique

J'essaie de remplacer une chaîne dans un fichier texte par une variable.

J'utilise ce code:

sed -i "s/search text \/TAG\//replace text ${variable}/" ${textfile}

Le contenu de la variable est /newTAG/. Et le contenu de la variable est le problème, plus précisément le / au début et à la fin.

Lorsque les deux / sont supprimés, le contenu est uniquement newTAG tout fonctionne correctement.

J'ai déjà essayé le suivant

sed -i "s/search text \/TAG\//replace text "${variable}"/" ${textfile}
sed -i 's/search text \/TAG\//replace text "${variable}"/' ${textfile}

Quelqu'un peut-il m'aider? Merci

6
Bird Person

Utilisez autre chose que / comme délimiteur pour l'expression rationnelle (par exemple, les deux points :):

sed -i "s:search text /TAG/:replace text ${variable}:" "${textfile}"

Ou échapper au / dans la variable.

9
muru