sed со строкой из нескольких слов, инициализированной командой read - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть файл с именем file.conf, содержащий:

это текст конфигурации и это слово, которое нужно изменить.

Запуск:

sed -i 's/WORD/"ONE TWO"/g' file.conf 

У меня будет файл file.conf изменен:

это текст конфигурации, и это «ОДИН ДВА», который нужно изменить.

теперь, если я создаю скрипт, использующий чтение:

read -p 'word to change' TEXT -> "ONE TWO"
echo $TEXT -> "ONE TWO" 
sed -i 's/WORD/'$TEXT'/g' file.conf

, он не работает с сообщением об ошибке:

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

file.conf не изменяется в этомcase.

но это работает, если я читаю $ TEXT только с одним словом без пробелов: например, "ONE".

Спасибо.

1 Ответ

0 голосов
/ 29 ноября 2018

Переменная двойная кавычка, как это:

sed -i 's/WORD/'"$TEXT"'/g' file.conf

Еще безопаснее:

sed -i 's/WORD/'"${TEXT}"'/g' file.conf
...