匹配后在文件中添加和删除行

时间:2013-07-09 23:55:20

标签: awk

请帮助我:

我有一个名为:demo.txt的文件,demo.txt的内容是:

[default]
exten=>test1,hint,SIP/202
exten=>tom,hint,SIP/233

[toyota]
exten=>test1,hint,SIP/202
exten=>tom,hint,SIP/233

[girls]
exten=>test1,hint,SIP/202
exten=>tom,hint,SIP/233

我想要一个脚本在[丰田]之后添加更多行,我需要做一些这样的事情:

[default]
exten=>test1,hint,SIP/202
exten=>tom,hint,SIP/233

[toyota]
exten=>another,hint,SIP/202
exten=>well,hint,SIP/202
exten=>test1,hint,SIP/202
exten=>tom,hint,SIP/233

[girls]
exten=>test1,hint,SIP/202
exten=>tom,hint,SIP/233

我需要另一个脚本来移除位于[丰田]下的一条线 例如,我想要删除:

exten=>well,hint,SIP/202

请告诉我,我怎样才能以简洁的方式做到这一点

谢谢!

2 个答案:

答案 0 :(得分:2)

不确定是否要从其他文件添加更多行或只是手动输入它们。如果是后者,那么您可以执行以下操作来添加新行:

awk '/^\[toyota\]/{print $0; print "exten=>another,hint,SIP/202" RS "exten=>well,hint,SIP/202";next}1' demo.txt

删除某些行:

awk '/^\[toyota\]/{p=1}p&&/exten=>well,hint,SIP\/202/{p=0;next}1' demo.txt

答案 1 :(得分:0)

如果sed是一个选项:

添加行

sed '/^\[toyota\]$/ aexten=>another,hint,SIP/202\nexten=>well,hint,SIP/202' demo.txt

删除行

sed '/^\[toyota\]$/, /^\[/ {/exten=>well,hint,SIP\/202/d}' demo.txt