一、需求:
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