回答編集履歴

1

awkの入力ファイル指定の「aaa.txt F=1 bbb.txt」の部分に関する質問について回答した。

2020/09/30 14:00

投稿

hidezzz
hidezzz

スコア1248

test CHANGED
@@ -49,3 +49,45 @@
49
49
  cccc4
50
50
 
51
51
  ```
52
+
53
+
54
+
55
+ #※コメントを受けて追記
56
+
57
+ 質問の本題ではないのですが、コメントの質問について回答します。
58
+
59
+
60
+
61
+ 入力ファイルの引数の並びが、 aaa.txt F=1 bbb.txtとなっている部分について、
62
+
63
+ aaa.txtの読み込み処理の後、変数Fに1を代入してからbbb.txtの読み込み処理を行うことが出来るのはawkの仕様です。
64
+
65
+
66
+
67
+ > これ、ashやkshやgawk以外のawkでも可能ですか?
68
+
69
+
70
+
71
+ オリジナルのawkからある仕様です。
72
+
73
+ どの時代に追加された仕様なのかまでは追っかけていませんが、少なくともawkのマニュアルには触れられています。
74
+
75
+
76
+
77
+ 「man awk」の「DESCRIPTION」より引用
78
+
79
+
80
+
81
+ > Any file of the form var=value is treated as an assignment, not a filename, and is executed at the time it would have been opened if it were a filename.
82
+
83
+
84
+
85
+ (DeeL翻訳のコピペ)
86
+
87
+ > var=value という形式のファイルは、ファイル名ではなく代入として扱われ、ファイル名であれば開かれた時刻に実行されます。
88
+
89
+
90
+
91
+ gawkのマニュアルの「AWKプログラムの実行」の説明がさらに詳しいです。
92
+
93
+ > コマンドラインで指定されたファイル名が var=val という形式ならば、それ は変数への代入であると解釈されます。変数 var は値 val に設定されます (これは、すべての BEGIN ブロックを実行したあとに行われます)。コマンドライン での変数の代入は、AWK が入力をフィールドやレコードに分割するためのセパレータ を実行時に変更するのに便利です。また、1 つのデータファイルに 対し数回処理を行う必要がある場合、状態をコントロールするのにも便利です。