shell sed向文件写进一行内容时,一次写入了多行
shell sed向文件写入一行内容时,一次写入了多行
在用sed向文件里写入一行内容,执行第一次写入一行,执行第二次写入了两行,如下:
脚本内容:
#/bin/bash
sed -i '/[a]/a\aa=12' "ini"
原文见:
[a]
b=12345
c=2
执行一次后文件内容:
[a]
aa=12
b=12345
c=2
执行两次后:
[a]
aa=12
aa=12
aa=12
b=12345
c=2
应该是sed的缓存没有清理吧?求解。。
------解决思路----------------------
sed的这个正则表达式[a]是表示匹配包含字符a的行,你执行这条命令之后在[a]下面插入一行aa=12,第二次执行的时候也匹配到这行,所以也会在这行下面插入aa=12。
你可以试试:
sed -i '/\[a\]/a\aa=12' "ini"
在用sed向文件里写入一行内容,执行第一次写入一行,执行第二次写入了两行,如下:
脚本内容:
#/bin/bash
sed -i '/[a]/a\aa=12' "ini"
原文见:
[a]
b=12345
c=2
执行一次后文件内容:
[a]
aa=12
b=12345
c=2
执行两次后:
[a]
aa=12
aa=12
aa=12
b=12345
c=2
应该是sed的缓存没有清理吧?求解。。
------解决思路----------------------
sed的这个正则表达式[a]是表示匹配包含字符a的行,你执行这条命令之后在[a]下面插入一行aa=12,第二次执行的时候也匹配到这行,所以也会在这行下面插入aa=12。
你可以试试:
sed -i '/\[a\]/a\aa=12' "ini"