如何查看awk数组中的所有内容?

Zen*_*Zen 63 awk

在我的理解中,awk 数组类似于 python dict。

所以我写下下面的代码来探索它:

awk '{my_dict[$1] = $2} END { print my_dict}' zen
Run Code Online (Sandbox Code Playgroud)

我得到了: awk: can't read value of my_dict; it's an array name.

由于第一列不是数字,我如何读取数组的总内容或遍历它?

Ste*_*itt 81

您可以遍历数组的键并提取相应的值:

awk '{my_dict[$1] = $2} END { for (key in my_dict) { print my_dict[key] } }' zen
Run Code Online (Sandbox Code Playgroud)

要获得类似于使用 Python 字典获得的输出,您也可以打印密钥:

awk '{my_dict[$1] = $2} END { for (key in my_dict) { print key ": " my_dict[key] } }' zen
Run Code Online (Sandbox Code Playgroud)

无论密钥类型如何,这都有效。


cha*_*aos 19

这将遍历数组:

END { for (i in my_dict) print my_dict[i] }
Run Code Online (Sandbox Code Playgroud)

i 是索引。


cuo*_*glm 11

数组 inawk不是像字典 in 那样的一流对象Python。中awk,不带下标的数组名只能在两种情况下使用:

  • 函数定义或函数调用中的参数。
  • 在关键字之后命名标记in

在其他情况下,awk将引发错误。

您需要一个for循环来迭代和打印数组的内容:

$ echo 1 2 | awk '{my_dict[$1] = $2};END {for(i in my_dict) print my_dict[i]}'
2
Run Code Online (Sandbox Code Playgroud)