
awkには、数値と文字列の操作のための組み込み関数があります。これがプログラミング言語がすることです。
ファイルを入力として指定せずにawkを使用していくつかの数値または文字列操作を実行できるかどうか疑問に思います。ファイルやstdin入力なしでawkを操作できますか?
たとえば、awkに1+2
awkプログラムで「入力」1と2を評価してハードコーディングさせたいとします。まあ、私は直接答えます。
$ awk "BEGIN{print 1+2}"
3
しかし、驚くべきことに、awkは入力ファイルを指定しなかったため、stdinの入力を待ちません。なぜできないの?
ありがとうございます。
答え1
これは意図的に設計されています。 (少なくとも)GNUのマニュアルページに文書化されています:awk
プログラム全体が
BEGIN
ブロックで構成されている場合は実行が終了し、それ以外の場合は入力ストリームが開き、実行が続行されます。
~からPOSIX:
awk
プログラムにパターンがあるジョブのみが含まれていて、ジョブにBEGIN
関数がBEGIN
含まれていない場合は、最後のジョブの最後のステートメントが実行されたときに入力を読み取らずに終了する必要があります。getline
awk
BEGIN