asorti排序

  1. data:

    12 34 56
    78 90 12
    23 45 89

  2. 要求对最后一个域进行排序,排序后结果如下:

    78 90 12
    12 34 56
    23 45 89

  3. 脚本:

    awk '{a[$NF]=$0;len=asorti(a,b)}END{for(i=0;++i<=len;) print a[b[i]]}' data
    
  4. 解析:

    ​ asorti是对数组a的下标(即$3或$NF)进行排序,并把排序后的下标存入新生成的数组b中,并把数组a的长度赋值给变量len。
    ​ 由于数组无法直接print打印,所有用for循环取出数组的下标,变量i是排序后的数组b的下标值,然后把b[i]作为下标在数组a中的赋值打印出来。
    ​ 内置函数asort只对值进行排序,会丢掉原来的数组值。

posted @ 2020-06-03 10:15  bigtree2pingping  阅读(170)  评论(0)    收藏  举报