我正在编写一个shell脚本,以便在文件
中找到匹配项后附加文本例如,在以下行的〜/ .bash_profile文件中
PATH=$PATH:$HOME/bin
我们需要附加:/usr/java/jdk1.6.0_38/bin
所以它将成为以下
PATH=$PATH:$HOME/bin:/usr/java/jdk1.6.0_38/bin
我怎么能用sed做到这一点?
我首先尝试从控制台内部执行以下命令,但它给了我错误抱怨'sed:-e表达式#1,字符13:对于's'的未知选项
sed '/PATH/s/$/:/usr/java/jdk1.6.0_38/bin' ~/.bash_profile
我上面的命令出了什么问题?
答案 0 :(得分:3)
问题是您在substitute命令的替换部分中有正则表达式分隔符。使用\
转义它们或使用不同的分隔符(在这种情况下为逗号):
sed '/PATH/ s,$,:/usr/java/jdk1.6.0_38/bin,' ~/.bash_profile
答案 1 :(得分:3)
这可能适合你(GNU sed):
sed 's|PATH=$PATH:$HOME/bin|&:/usr/java/jdk1.6.0_38/bin|' ~/.bash_profile