Я пытаюсь заменить текст в файле значением в переменной, используя sed:

file=1601001000100000003_0003_0_E_2011-11-21_16-52-16.db

sed -i "s/yyyy/$file" tempsbchg.sh

но sed возвращается

sed: -e expression #1, char 58: unterminated `s' command

Я также попробовал:

sed -i "s/yyyy/${file}" tempsbchg.sh

2 ответа2

1

Вы пропустили последний / .

Пытаться:

sed -i "s/yyyy/$file/" tempsbchg.sh

Синтаксис команды s (как в замене): 's /regexp /replace /flags'. Символы / могут быть равномерно заменены любым другим отдельным символом в любой данной команде s. Символ / (или любой другой символ, используемый вместо него) может появляться в регулярном выражении или замене, только если ему предшествует символ \.

1

Вам нужно "прекратить" подстановку - поставьте / в конце:

file=1601001000100000003_0003_0_E_2011-11-21_16-52-16.db

sed -i "s/yyyy/$file/" tempsbchg.sh

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .