awk:空のファイルに埋め込まれたFILENAME変数

awk:空のファイルに埋め込まれたFILENAME変数

awk入力が空のファイルのときにFILENAME変数が何も返さないのはなぜですか?awkファイルを開くことができないという意味ですか?開いていない場合は空であることをどうやって知ることができますか?または、開いているとファイル名を返さないのはなぜですか?

私は読んだこの投稿ただし、次の作業が必要な理由は説明しません。

awk 'BEGINFILE{print FILENAME}1' filename

以下はありません。

awk '{print FILENAME}' filename #or
awk 'BEGIN{print FILENAME}' filename

ベストアンサー1

awkマニュアルから:

FILENAME  A  pathname  of  the  current input file.
Inside a BEGIN action the value is undefined.  (...)

それが説明だと思います。フィールドが処理されるまで値はFILENAME定義されません。空のファイルの場合、フィールドは処理されないため、変数は初期化されていません。

おすすめ記事