sed在匹配后追加文本

sed在匹配后追加文本,sed,append,Sed,Append,我正在编写一个shell脚本,以便能够在文件中找到匹配项后追加文本 例如,在以下行的~/.bash_概要文件中 PATH=$PATH:$HOME/bin 我们需要在它后面附加:/usr/java/jdk1.6.0_38/bin 因此,它将成为以下内容 PATH=$PATH:$HOME/bin:/usr/java/jdk1.6.0_38/bin 我怎么能和塞德一起做呢 我首先尝试从控制台内部使用以下命令,但它给了我一个错误:sed:-e expression#1,char 13:s的未知选项

我正在编写一个shell脚本,以便能够在文件中找到匹配项后追加文本

例如,在以下行的~/.bash_概要文件中

PATH=$PATH:$HOME/bin
我们需要在它后面附加:/usr/java/jdk1.6.0_38/bin

因此,它将成为以下内容

PATH=$PATH:$HOME/bin:/usr/java/jdk1.6.0_38/bin
我怎么能和塞德一起做呢

我首先尝试从控制台内部使用以下命令,但它给了我一个错误:sed:-e expression#1,char 13:s的未知选项


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

问题是在替换命令的替换部分中有regex分隔符。使用
\
对其进行转义,或使用其他分隔符(本例中为逗号):


问题是在替换命令的替换部分中有regex分隔符。使用
\
对其进行转义,或使用其他分隔符(本例中为逗号):

这可能适用于您(GNU-sed):

这可能适用于您(GNU-sed):

sed '/PATH/s/$/:/usr/java/jdk1.6.0_38/bin' ~/.bash_profile
sed '/PATH/ s,$,:/usr/java/jdk1.6.0_38/bin,' ~/.bash_profile
sed 's|PATH=$PATH:$HOME/bin|&:/usr/java/jdk1.6.0_38/bin|' ~/.bash_profile