如何在AWK 3.1.3中按定义的顺序打印数组

时间:2013-04-18 06:02:51

标签: awk

我用Google搜索并发现在AWK 4.0之后我们可以通过在循环之前放置PROCINFO [“sorted_in”]命令来按照定义的顺序打印数组。例如

    PROCINFO["sorted_in"] = "@ind_num_asc"
    for( i in array)
          print i, array[i]

在AWK 4.0.2中,它有效。但是,我在AWK 3.1.3环境中尝试过,它没有用。这个早期版本的AWK不支持此功能吗?如何在AWK 3.1.3中实现这一目标?

1 个答案:

答案 0 :(得分:5)

只需使用数字索引保留第二个数组order,并将第一个数组的键作为值。然后,您可以按顺序遍历order并查找array

的值
for (i = 1; i < length(order); i++) {
  print order[i], array[order[i]]
}

在构建order时,您可能需要检查密钥是否已存在于array中,以防止多次显示array的密钥。