![gsub 不接受 gawk 中的第四个参数](https://linux22.com/image/1193115/gsub%20%E4%B8%8D%E6%8E%A5%E5%8F%97%20gawk%20%E4%B8%AD%E7%9A%84%E7%AC%AC%E5%9B%9B%E4%B8%AA%E5%8F%82%E6%95%B0.png)
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)