sed在匹配行前面或者后面插入一行
Posted 奇妙之二进制
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sed在匹配行前面或者后面插入一行相关的知识,希望对你有一定的参考价值。
在匹配的行后面插入一行:
sed -i '/匹配行pattern/a\\新插入的行'
新插入的行或者匹配行如果有特殊字符,记得转义。
也可以是:
sed -i '/匹配行pattern/a 新插入的行'
如果要在匹配的行前面插入一行,把a命令改成i命令即可。
演示:
1.查看原文件中的内容
[root@testvm02 ~]# cat nrpe.cfg
#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' nrpe.cfg
[root@testvm02 ~]# cat nrpe.cfg
#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' nrpe.cfg
注意:这里没有s/原/新/的方法,也就是没有s这个参数,并且最后没有/.
以上是关于sed在匹配行前面或者后面插入一行的主要内容,如果未能解决你的问题,请参考以下文章