AWK - 用子匹配替换

AWK - replace with sub match

如何使用awk替换子匹配?

我试过了:

{
fss="FieldsFunc(s string, f bool)"
fss=gensub(/([( ])(.+?) .+?([,)])/,"\1\2\3","g",fss); print fss;
}

并期望输出为 FieldsFunc(s, f),但我得到了 FieldsFunc(s string, f)。我做错了什么?谢谢。

g?awk 不支持懒惰。不贪心量词是 Perl 特有的。您可以将正则表达式更改为更具限制性的内容:

fss = gensub(/(\w+) +\w+([,)])/,"\1\2", "g", fss);