Если вы хотите заменить ключевое слово на строку с помощью sed, sed старается интерпретировать заменяемую строку. Если в строке замены есть символы, которые sed считает специальными, например, символ '/', то произойдет сбой, если, конечно, вы не предполагали, что в строке замены есть символы, которые говорят sed, как действовать.
Пример:
VAR="hi/"
sed "s/KEYWORD/$VAR/g" somefile
Есть ли способ сказать sed не пытаться интерпретировать строку замены для специальных символов? Все, что я хочу - это иметь возможность заменить ключевое слово в файле содержимым переменной, независимо от того, что это за содержимое.
sed(1)просто интерпретирует, что он получает. В вашем случае он получает это через интерполяцию оболочки. Я считаю, что вы не можете делать, как хотите, но проверьте руководство. Я знаю, что в Perl (который делает проходимую sedзамену с гораздо более богатыми регулярными выражениями), вы можете указать строку, которую нужно воспринимать буквально, опять же, проверьте руководство.
sedних и не использовать их, просто удалите их с обратной косой черты.VAR='hi\/'не дает такой проблемы.