2012-04-25 4 views
3

Я бегу под SED командуСЕПГ ошибка: команда незакрытых «S»

sed -i s/abc=.*$/abc=def ghi/g hpq_sf_attach_wf_param.txt 

и он дал мне ошибку:

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

Я заметил, что это происходит из-за пространства в промежутках между def и ghi. Любая идея, как это исправить?

+0

Возможной Дубликат [Когда обернуть кавычки переменной оболочки?] (Https: // StackOverflow .com/questions/10067266/when-to-wrap-quotes-around-a-shell-variable) – tripleee

ответ

11

Для защиты специальных символов, включая пробелы, необходимо использовать цитирование, $ и *.

sed -i 's/abc=.*$/abc=def ghi/g' hpq_sf_attach_wf_param.txt 
+0

привет, добавив одиночную кавычку, вызвав ошибку обновления, ничего не меняется в целевом файле hpq_sf_attach_wf_param.txt ~ хотя это должно быть был обновлен – iwan

+0

Вы уверены, что ваш шаблон правильный? Возможно, отредактируйте свой вопрос, чтобы включить некоторые примеры строк из 'hpq_sf_attach_param.txt'? – geekosaur

1

так что geekosaur имел это право. Причина, по которой у вас возникла проблема, состоит в том, что она должна быть двойными кавычками для подстановочных знаков, потому что с одинарными кавычками она воспринимает их как буквенные символы, а не для значения, которое вы хотите.

sed -i "s/abc=.*$/abc=def ghi/g" hpq_sf_attach_wf_param.txt 

также, если пространство между «DEF» и «ГХИ» дает вам проблемы, добавив «\» должно помочь сделать это читать как буквальное пространство.

СЕПГ -i "s/а = * $/а = Защита \ ГХИ/г" hpq_sf_attach_wf_param.txt

Смежные вопросы