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]))と書かれています。
「sの内容は、値を比較するためのgawkの通常のルールを使用してソートされます...」
ただし、インデックス自体を一時配列にコピーし、asort()を使用してその新しい配列を並べ替えると、
それは大丈夫のようです(のようなものを使用して):
j=1; for(e in a) { temp[j++] = e; }
私はDOIN-IT-WRONGですか、それともgawkのasorti()に問題がありますか?