6

我搜索了一下,发现在 AWK 4.0 之后,我们可以通过在 for 循环之前放置 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 中实现这个目标?

4

1 回答 1

5

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

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

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

于 2013-04-18T07:32:22.397 回答