Si vous souhaitez remplacer un mot clé par une chaîne à l'aide de sed, sed s'efforce d'interpréter votre chaîne de remplacement. Si la chaîne de remplacement contient des caractères que sed considère spéciaux, comme un caractère '/', cela échouera, à moins bien sûr que vous vouliez que votre chaîne de remplacement contienne des caractères qui indiquent à sed comment agir.
Ex:
VAR="hi/"
sed "s/KEYWORD/$VAR/g" somefile
Existe-t-il un moyen de dire à sed de ne pas essayer d'interpréter la chaîne de remplacement pour les caractères spéciaux? Tout ce que je veux, c'est pouvoir remplacer un mot-clé dans un fichier par le contenu d'une variable, quel que soit ce contenu.
sed(1)
interprète simplement ce qu'il obtient. Dans votre cas, il l'obtient via une interpolation de shell. Je pense que vous ne pouvez pas faire ce que vous voulez, mais consultez le manuel. Je sais qu'en Perl (qui fait un sed
remplacement passable , avec des expressions régulières beaucoup plus riches), vous pouvez spécifier qu'une chaîne doit être prise littéralement, encore une fois, consultez le manuel.
sed
et les faire ne pas être spéciaux, il suffit de les échapper.VAR='hi\/'
ne donne pas un tel problème.