我用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中实现这一目标?
答案 0 :(得分:5)
只需使用数字索引保留第二个数组order
,并将第一个数组的键作为值。然后,您可以按顺序遍历order
并查找array
:
for (i = 1; i < length(order); i++) {
print order[i], array[order[i]]
}
在构建order
时,您可能需要检查密钥是否已存在于array
中,以防止多次显示array
的密钥。