我喜欢定义一个包装现有 awk 命令的新命令,例如print
. 但是,我不想使用函数:
#wrap command with function
function warn(text) { print text > "/dev/stderr" }
NR%1e6 == 0 {
warn("processed rows: "NR)
}
相反,我喜欢定义一个可以不带括号调用的新命令:
#wrap command with new command ???
define warn rest... { print rest... > "/dev/stderr" }
NR%1e6 == 0 {
warn "processed rows: "NR
}
我可以想象的一种解决方案是使用预处理器,并且可以很好地设置 awk 脚本的 shebang 以调用此预处理器,然后调用 awk。但是,我更希望有一个纯粹的 awk 解决方案。
注意:该解决方案也应该在我使用的mawk中工作,因为它比vanilla GNU/awk快得多。
更新:讨论表明gawk
(GNU/awk)可以非常快并且mawk
不是必需的。