删除文件中两个关键词之间的内容包括关键词 :
sed 's/^.*配置开始.*$/,/^.*配置结束.*$/d' a.txt
[las@master master]$ cat a.txt
<!--配置开始-->
<property name="haController">
<!--配置结束-->
[las@master master]$ sed 's/^.*配置开始.*$/,/^.*配置结束.*$/d' a.txt
[las@master master]$
但是我们并不想删除关键词,用下面这个命令 :
sed '/^.*配置开始.*$/,/^.*配置结束.*$/{/^.*配置开始.*$/!{/^.*配置结束.*$/!d}}' a.txt
[las@master master]$ cat a.txt
<!--配置开始-->
<property name="haController">
<!--配置结束-->
[las@master master]$ sed '/^.*配置开始.*$/,/^.*配置结束.*$/{/^.*配置开始.*$/!{/^.*配置结束.*$/!d}}' a.txt
<!--配置开始-->
<!--配置结束-->
[las@master master]$
替换文件中的多个关键词, 将修改后的文件写出到新文件中 :
sed -e "s/替换1/第一个/g" -e "s/替换2/第二个/g" a.txt > b.txt
[las@master master]$ cat a.txt
替换1
替换2
[las@master master]$ sed -e "s/替换1/第一个/g" -e "s/替换2/第二个/g" a.txt > b.txt
[las@master master]$ cat b.txt
第一个
第二个
[las@master master]$
将b.txt的文件内容插入到a.txt文件指定关键词位置后面
sed -i '/^.*替换.*$/r b.txt' a.txt
[las@master master]$ cat a.txt
替换
[las@master master]$ cat b.txt
第一个
第二个
[las@master master]$ sed -i '/^.*替换.*$/r b.txt' a.txt
[las@master master]$ cat a.txt
替换
第一个
第二个
[las@master master]$