ファイルを入力として指定せずにawkを使用していくつかの数値または文字列操作を実行できますか?

ファイルを入力として指定せずにawkを使用していくつかの数値または文字列操作を実行できますか?

awkには、数値と文字列の操作のための組み込み関数があります。これがプログラミング言語がすることです。

ファイルを入力として指定せずにawkを使用していくつかの数値または文字列操作を実行できるかどうか疑問に思います。ファイルやstdin入力なしでawkを操作できますか?

たとえば、awkに1+2awkプログラムで「入力」1と2を評価してハードコーディングさせたいとします。まあ、私は直接答えます。

$ awk "BEGIN{print 1+2}"
3

しかし、驚くべきことに、awkは入力ファイルを指定しなかったため、stdinの入力を待ちません。なぜできないの?

ありがとうございます。

ベストアンサー1

これは意図的に設計されています。 (少なくとも)GNUのマニュアルページに文書化されています:awk

プログラム全体がBEGINブロックで構成されている場合は実行が終了し、それ以外の場合は入力ストリームが開き、実行が続行されます。

~からPOSIX:

awkプログラムにパターンがあるジョブのみが含まれていて、ジョブにBEGIN関数がBEGIN含まれていない場合は、最後のジョブの最後のステートメントが実行されたときに入力を読み取らずに終了する必要があります。getlineawkBEGIN

おすすめ記事