My input file has blocks like below.

[abc]
para1=123
para2=456
para3=111

[pqr]
para1=333
para2=765
para3=1345

[xyz]
para1=888
para2=236
para3=964


现在我该如何单独修改pqr块内的para2的值而不更改其他块或第一个块中的值。请通过awk或perl或sed命令帮助我实现此目标。

最佳答案

试试这个awk

awk -v RS= -v ORS='\n\n' '/^\[pqr\]/{sub(/para2=[^\n]*/, "para2=foobar")} 1' file
[abc]
para1=123
para2=456
para3=111

[pqr]
para1=333
para2=foobar
para3=1345

[xyz]
para1=888
para2=236
para3=964

07-24 13:18