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

如何按AWK 3.1.3中定义的顺序打印数组,awk,Awk,我在谷歌上搜索了一下,发现在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中,它是有效的。但是,我在AWK3.1.3环境中尝试了它,它没有工作。此早期版本的AWK是否不支持此功能?如何在AWK 3.1.3中实

我在谷歌上搜索了一下,发现在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中,它是有效的。但是,我在AWK3.1.3环境中尝试了它,它没有工作。此早期版本的AWK是否不支持此功能?如何在AWK 3.1.3中实现这一目标?

只需保持第二个数组的
顺序
,数值索引和第一个数组的键作为值。然后,您可以依次遍历
顺序
,并查找
数组
的值:

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

在生成
订单
时,您可能需要检查密钥是否已存在于
数组
中,以防止多次显示
数组
的密钥

查看asort/asorti以对arrayNo进行排序,非GNU AWK和较旧版本的gawk不支持此功能。明确“确定的顺序”和“此目标”。您是否希望按特定顺序打印数组?如果是,顺序是什么(先入或数字排序或字母排序或?或者,您是否正在寻找一种机制来定义不同的打印数组顺序,如您在示例中通过填充PROCINFO[]所示?3.1.3中没有“length”函数。请参阅Ventimiglia先生的函数(带有我的扩展名),或者只保留创建“order”时使用的最后一个索引。