sed: неправильная интерпретация escape-символов в переменной

Я пытаюсь заменить строку в файле значением переменной (переменная содержит путь к Windows). Хотя переменная правильно печатается в STDOUT, при использовании в sed для замены интересующей строки обратная косая черта исчезает.

Есть идеи, как это исправить? Другие идеи приветствуются.

КОД:

WINPATH="\\\\hd-place\\stor1\\fold1\\archive\\$VAR1.$Var2\\Viewer"

напечатайте это на экране (как следует): \\hd-place\stor1\fold1\archive\$VAR1.$Var2\Viewer

Я использую команду SED: cat file.xml | sed "3 c\ ‹\RunFolder>$WINPATH‹/RunFolder>" (извините за косые черты внутри тегов XML)

Это выводит это:

\hd-placestor1fold1archive$VAR1.$Var2Viewer

Где я хочу это: \\hd-place\stor1\fold1\archive\$VAR1.$Var2\Viewer


person Nick    schedule 16.09.2011    source источник


Ответы (1)


Вам нужен один дополнительный уровень экранирования для обратной косой черты, так как sed также интерпретирует их после того, как переменная была расширена.

person Arkku    schedule 16.09.2011
comment
невероятный. Честно говоря, я бы когда-нибудь догадался об этом. Работает как шарм (хотя мой код отвратительный)! - person Nick; 17.09.2011