awk配列内のすべてのコンテンツを表示する方法は?


41

私の理解では、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.

最初の列は数字ではないので、配列の内容全体をどのように読み取ることができますか?

回答:


60

配列のキーをループして、対応する値を抽出できます。

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

これは、キーの種類に関係なく機能します。


14

それは配列をループします:

END { for (i in my_dict) print my_dict[i] }

i インデックスです。


9

の配列は、awk辞書のようなファーストクラスのオブジェクトではありませんPython。ではawk、添え字なしの配列名は2つのコンテキストでのみ使用できます

  • 関数定義または関数呼び出しのパラメーター。
  • keywordの後の名前トークンin

他のコンテキストでawkは、エラーが発生します。

for配列の内容を反復して出力するには、ループが必要です。

$ echo 1 2 | awk '{my_dict[$1] = $2};END {for(i in my_dict) print my_dict[i]}'
2
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.