我在gawk的asorti函数中遇到以下问题:

gawk 'BEGIN{ \

  a[1]=6; \

  a[2]=7; \

  a[3]=8; \

  a[21]=9; \

  a[123]=10; \

  t=asorti(a, o); \

  for (i=1; i<=t; i++) { \

    print i,o[i]; \

  } \

}'

结果是:
1 1

2 123

3 2

4 21

5 3

因此,很明显awk按字典顺序对索引进行了排序,但是awk的文档说(asort(s [,d])):



但是,当我将索引本身复制到temp数组中,并使用asort()对新数组进行排序时,

看起来还可以(使用类似方法):
j=1; for(e in a) { temp[j++] = e; }

我是不是犯错了,还是gawk的asorti()有问题?

最佳答案

根据gawk manual的说法:“要记住的数组的一个重要方面是数组下标始终是字符串。”

10-07 15:25