如何查看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.

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

Answers:


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 是索引。


8

数组in awk不是像字典中的一流对象Python。在中awk,不带下标的数组名称只能在两个上下文中使用:

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

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

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

$ echo 1 2 | awk '{my_dict[$1] = $2};END {for(i in my_dict) print my_dict[i]}'
2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.