sed匹配第一次出现的字符串,追加文件内容

时间:2016-04-29 10:33:22

标签: bash sed scripting-language

在sed输出我想要的东西时遇到一些麻烦:

我有我的文件内容(idmap):

idmap config ....

idmap config ....

正在写入文件(测试)

[global]

[global]

我使用了以下sed命令: -

sed '/\[global\]/ r idmap' /tmp/testing

该命令按预期工作并匹配所有[global]标记,并在所有[global]出现后插入文本:

[global]

idmap config ....

idmap config ....

[global]

idmap config ....

idmap config ....

我尝试以下内容仅匹配第一次出现的[global]

sed '0,\[global\]/ r idmap' /tmp/testing 

然后产生:

idmap config ....

idmap config ....

idmap config ....

idmap config ....

[global]

idmap config ....

idmap config ....

[global]

对此处发生的事情的任何解释都会非常感激,awk也可能对我有用,以及如何获得所需的输出:

[global]

idmap config ....

[global]

idmap config ....

在Centos 7.1 bash上运行。

1 个答案:

答案 0 :(得分:0)

awk 'FNR==NR{a=a"\n"$0;next} /^\[global\]/&& !f{$1=$1""a;f=1};1' idmapfile testingfile