gsub 不接受 gawk 中的第四个参数

gsub 不接受 gawk 中的第四个参数

gsub使用时一直在使用gawk,但不接受第 4 个参数。我该如何修复此问题,以便获得没有空格的字符串?

  for ( knam in tseq ) {
    ## Remove any blanks from array element astr[i]
    str = "" ; gsub(/[[:blank:]]+/, "", astr[i], str)
    if ( knam == str ) {
      print "Matched line: " astr[i]
     }
   }

答案1

至少从 GNU Awk 5.1.0 开始,该gsub函数仅接受 3 个参数,修改第三个参数到位,并返回所进行的替换次数。

如果你想将结果分配给新的字符串并保持输入不变,你可以gensub使用

str = gensub(/[[:blank:]]/,"", "g", astr[i])

但请注意,虽然gsub是可移植的,但gensub它是 GNU awk 扩展 - 如果您不需要其高级功能gensub(例如反向替换),则使用gsub但先分配字符串:

str = astr[i]; gsub(/[[:blank:]]+/, "", str)

GNU Awk 用户指南:字符串操作函数

相关内容