Unix sed command

10.06.2019 01:52:07 Просмотров 39 Источник

Надо в конфигурационном файле поменять путь. Как сделать это используя sed? PATH=/home/user/folder/ на PATH=/home/user/newfolder".

Пробовал так:

sed -i 's/PATH='/'home'/'user'/'folder'/PATH='/'home'/'user'/'newfolder/' file.txt

Ошибка:

sed: -e expression #1, char 14: unknown option to `s'

Кто знает как можно правильно это сделать?

У вопроса есть решение - Посмотреть?

Ответы - Unix sed command / Unix sed command

Является ответом!
Wiktor Stribiżew

10.06.2019 01:55:09

Например так:

from="PATH=/home/user/folder/"
to="PATH=/home/user/newfolder"
sed -i "s,$from,$to," file.txt

См. пример работы скрипта.

Смысл в том, чтобы вместо символа косой черты в качестве разделителя использовать другой, такой, который не встречается ни в шаблоне поиска, ни в шаблоне замены.

https://ru.stackoverflow.com/questions/991281/unix-sed-command/991283#comment1673291_991283
works. спасибо.
PotroNik

19.06.2019 11:18:07

sed -i 's/PATH='/'home'/'user'/'folder'/PATH='/'home'/'user'/'newfolder/' file.txt

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

sed -i 's/PATH=\/home\/user\/folder/PATH=\/home\/user\/newfolder/g' file.txt

Так же можно изменить разделитель на |,.@ и т.д.

sed 's|PATH=/home/user/folder/|PATH=/home/user/newfolder/|g'

Помочь в развитии проекта:
Закрыть X