Unix sed command
Надо в конфигурационном файле поменять путь. Как сделать это используя 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

10.06.2019 01:55:09
Например так:
from="PATH=/home/user/folder/"
to="PATH=/home/user/newfolder"
sed -i "s,$from,$to," file.txt
Смысл в том, чтобы вместо символа косой черты в качестве разделителя использовать другой, такой, который не встречается ни в шаблоне поиска, ни в шаблоне замены.


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'