2012-07-20 2 views
0

У меня есть следующая запись в моем .bashrc:SED заменить PATH в .bashrc

PATH=$PATH:/home/user/abc/bin;export PATH; # ADDED BY INSTALLER - DO NOT EDIT OR DELETE THIS COMMENT 

Я хочу, чтобы заменить /home/user/abc/bin для любого пути, который я выбираю. Как это сделать с помощью sed?

У меня есть следующие:

sed 's,PATH=[^;]*,PATH=$PATH/home/user/app/2.1,' -i ~/.bashrc 

Но, это будет заменить все, что начинается с PATH, как я могу указать только выбрать то, что начинается с PATH, но и включает в себя строку ADDED BY INSTALLER - DO NOT EDIT OR DELETE THIS COMMENT

+0

Зачем использовать 'sed' для одной записи? Вам нужно сделать это несколько раз? –

ответ

0

Вы делаете так:

NEWPATH="your_new_path" sed -i "/ADDED BY INSTALLER - DO NOT EDIT OR DELETE THIS COMMENT/ s:/home/user/abc/bin:$NEWPATH:" .bashrc 
0

с якорями к началу (^) и концу строки ($), например:

sed -i.bak -e 's,^PATH=[^;]*\(.*ADDED BY INSTALLER - DO NOT EDIT OR DELETE THIS COMMENT\)$,PATH=$PATH/home/user/app/2.1\1,' ~/.bashrc 

Я добавил суффикс .bak к редактированию на месте для обеспечения безопасности.

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