Awk 匹配后在文件中添加和删除行
请帮助我:Awk 匹配后在文件中添加和删除行,awk,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 我想要一个脚本,在[toyo
我有一个文件名为: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
我想要一个脚本,在[toyota]之后添加更多的行,我需要做如下操作:
[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
我需要另一个脚本来删除位于[toyota]下的一行
例如,我想删除:
exten=>well,hint,SIP/202
请告诉我,我怎样才能以一种简单干净的方式做到这一点
谢谢 如果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
不确定是否要从另一个文件中添加更多行,或者只是手动输入它们。如果是后者,则可以执行以下操作来添加新行:
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
嗨,它工作正常,但可以使用sed删除。上面写着错误。它说:[root@Linuxshm]#sh del.sh sed:-e表达式#1,字符45:未知命令:`2'[root@Linuxshm]#@Manuel,哎呀……必须在202之前退出
/
,现在尝试编辑后的答案如何在202之后添加和删除一行;(丰田)@Manuel你是说它不工作还是真的工作了?:)