awk 中的结束括号

Ending Parantheses in Awk

我有下面这行代码,我希望下面的三个增加四。

while(i <= 3)

我有以下内容,但它给我一个关于右括号的错误:

awk '/ while(i <= /  {sub(+0,+4,)} )  1' file >file.tmp && mv file.tmp file

任何thoughts/ideas关于如何修复错误并将错误增加四?

感谢您的任何意见。

这将使值 +4:

$ awk '/while\(i <= /  {sub(+0,+4,)}  1' file
while(i <= 7)

请注意,您正在匹配 " while...",前导 space,并且在 {sub()} 之后的某处还有一个 )。删除它们并转义 ( 解决了这个问题。图形化:

awk '/ while(i <= /  {sub(+0,+4,)} )  1' file
      ^     ^                            ^
   extra?   escape!                      removed!

总的来说,尽量从简单到复杂。你的基本结构是:

awk '/pattern/ {sub(+0,+4,)} 1' file