asorti排序
-
data:
12 34 56
78 90 12
23 45 89 -
要求对最后一个域进行排序,排序后结果如下:
78 90 12
12 34 56
23 45 89 -
脚本:
awk '{a[$NF]=$0;len=asorti(a,b)}END{for(i=0;++i<=len;) print a[b[i]]}' data -
解析:
asorti是对数组a的下标(即$3或$NF)进行排序,并把排序后的下标存入新生成的数组b中,并把数组a的长度赋值给变量len。
由于数组无法直接print打印,所有用for循环取出数组的下标,变量i是排序后的数组b的下标值,然后把b[i]作为下标在数组a中的赋值打印出来。
内置函数asort只对值进行排序,会丢掉原来的数组值。
*** 你必须十分努力,才能看起来毫不费力 ***

浙公网安备 33010602011771号