0

我正在编写一个 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 expression #1, char 13: unknown option to 's''

sed '/PATH/s/$/:/usr/java/jdk1.6.0_38/bin' ~/.bash_profile

我上面的命令有什么问题?

4

2 回答 2

3

问题是您在替换命令的替换部分中有正则表达式分隔符。\使用或使用不同的分隔符(在本例中为逗号)转义它们:

sed '/PATH/ s,$,:/usr/java/jdk1.6.0_38/bin,' ~/.bash_profile
于 2012-12-10T11:06:23.567 回答
3

这可能对您有用(GNU sed):

sed 's|PATH=$PATH:$HOME/bin|&:/usr/java/jdk1.6.0_38/bin|' ~/.bash_profile
于 2012-12-10T11:10:40.057 回答