私の理解では、awk配列はpython dictのようなものです。
だから私はそれを探るために以下のコードを書き留めます:
awk '{my_dict[$1] = $2} END { print my_dict}' zen
そして私は得ました:awk: can't read value of my_dict; it's an array name.
最初の列は数値ではないので、配列の全内容を読み取ったり、トラバースしたりするにはどうすればよいですか?
配列のキーをループして、対応する値を抽出できます。
awk '{my_dict[$1] = $2} END { for (key in my_dict) { print my_dict[key] } }' zen
Pythonディクショナリで取得するのと同様の出力を取得するには、キーを印刷することもできます。
awk '{my_dict[$1] = $2} END { for (key in my_dict) { print key ": " my_dict[key] } }' zen
これは、キーの種類に関係なく機能します。
それは配列をループします:
END { for (i in my_dict) print my_dict[i] }
i
はインデックスです。
awk
の配列は、Python
の辞書のようなファーストクラスオブジェクトではありません。 awk
では、添え字のない配列名は 2つのコンテキスト でのみ使用できます:
in
に続く名前トークン。他のコンテキストでは、awk
はエラーを発生させます。
配列の内容を反復して出力するには、for
ループが必要です。
$ echo 1 2 | awk '{my_dict[$1] = $2};END {for(i in my_dict) print my_dict[i]}'
2