sed在匹配行前面或者后面插入一行

时间:2024-11-19 06:59:06

在匹配的行后面插入一行:

sed -i '/匹配行pattern/a\新插入的行'

新插入的行或者匹配行如果有特殊字符,记得转义。

也可以是:

sed -i '/匹配行pattern/a 新插入的行'

如果要在匹配的行前面插入一行,把a命令改成i命令即可。

演示:

1.查看原文件中的内容

[root@testvm02 ~]# cat  
#command[check_users]=/usr/local/nagios/libexec/check_users -w $ARG1$ -c $ARG2$
#command[check_load]=/usr/local/nagios/libexec/check_load -w $ARG1$ -c $ARG2$
#command[check_disk]=/usr/local/nagios/libexec/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
#command[check_procs]=/usr/local/nagios/libexec/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$

2.通过sed实现在搜索到某个字符串之后,在下一行插入字符串

[root@testvm02 ~]# sed -i '/#command\[check_procs\]/a\command\[check_disk\]=\/usr\/local\/nagios\/libexec\/check_disk -w 15\% -c 10\% -p \/ -C -w 15\% -c 10\% -p \/mnt'  
[root@testvm02 ~]# cat  
#command[check_users]=/usr/local/nagios/libexec/check_users -w $ARG1$ -c $ARG2$
#command[check_load]=/usr/local/nagios/libexec/check_load -w $ARG1$ -c $ARG2$
#command[check_disk]=/usr/local/nagios/libexec/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
#command[check_procs]=/usr/local/nagios/libexec/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 15% -c 10% -p / -C -w 15% -c 10% -p /mnt

另,a后面的\可以不需要:

sed -i '/#command\[check_procs\]/a command\[check_disk\]=\/usr\/local\/nagios\/libexec\/check_disk -w 15\% -c 10\% -p \/ -C -w 15\% -c 10\% -p \/mnt'  

注意:这里没有s/原/新/的方法,也就是没有s这个参数,并且最后没有/.