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