我的输入文件有像
这样的块[abc]
para1=123
para2=456
para3=111
para4=666
[pqr]
para1=333
para2=765
para3=1345
[xyz]
para1=888
para2=236
我有两个要求:
para4=uiy
添加到阻止[pqr]
para2=236
删除[xyz]
请帮助我如何使用awk命令实现此目的
答案 0 :(得分:0)
添加参数
awk -F"\n" '$1~/pqr/{$(NF+1)="para4=uiy"}1' OFS="\n" RS= file
如果它总是添加最后一个,你不知道你可以使用的数字
awk -F"\n" '$1~/pqr/{$(NF+1)="para"NF"=uiy"}1' OFS="\n" RS=
删除参数
awk -F"\n" '$1~/xyz/{gsub(/\npara2=236/,"")}1' OFS="\n" RS= file
答案 1 :(得分:0)
这是另一种解决方案。通过将RS
设置为空,awk
可用于块。 (OSCam?)
awk '/^\[pqr/ {$0=$0"\npara4=uiy"} /^\[xyz/ {sub(/para2=[0-9]*/,"")}1' RS= ORS="\n\n" file
[abc]
para1=123
para2=456
para3=111
para4=666
[pqr]
para1=333
para2=765
para3=1345
para4=uiy
[xyz]
para1=888