sed在匹配行前或后添加一行,并且保留空格

一、需求:

1、有时候不知道文件确切的行数,只能匹配行,然后新增一行
2、新增的行可能需要在开头保留一些空格

二、测试文件如下:

[root@node2 ~]# cat test.txt
do
do
  ppp sss();
aaa     dddd;
  ppp sss();
        allow 192.168.40.28;
        allow 192.168.40.29;

三、在匹配上前面添加一行,并保留空格

语法:

sed  -i  "/匹配的内容/i\[可能要保留的空格]添加的内容"  urfile

解析:

第一个i: 修改源文件,文件内部操作的动作。下面为了观察,我没加。
第二个i: 匹配行前面插入。
反斜杠\: 它后面的都作为内容输出,包括空格。 
第一个/和第二个/: 固定写法。

栗子1:添加一行,并保留空格

sed "/^[[:space:]]allow 192.168.40.28;/i\        allow 192.168.40.27;" test.txt

参数解析:

[[:space:]]:   表示匹配空格。
[[:space:]]*:  表示任意个空格。

在这里插入图片描述

栗子2:有时候sed只匹配第一行,并做修改(暂时没想到办法)

四、在匹配上后面添加一行,并保留空格

语法:

sed  -i  "/匹配的内容/a\[可能要保留的空格]添加的内容"  urfile

解析:

a:在匹配行后面添加

栗子:

sed "/^[[:space:]]allow 192.168.40.28;/a\        allow 192.168.40.30;" test.txt

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值