sed在比赛后追加文字

时间:2012-12-10 11:00:28

标签: sed append

我正在编写一个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

我上面的命令出了什么问题?

2 个答案:

答案 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