3

など、既存の 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
}

私が想像できる解決策の 1 つは、プリプロセッサを使用し、awk スクリプトのシバンを適切に設定して、このプリプロセッサに続いて awk を呼び出すことです。しかし、私は純粋な awk ソリューションをもっと望んでいました。

:ソリューションは、バニラGNU / awkよりもはるかに高速であるため、私が使用するmawkでも機能するはずです。

更新gawk: (GNU/awk) は非常に高速であり、必須ではないことが議論で明らかになりましたmawk

4

2 に答える 2