shell sort命令:如何按最后一列排序(列数不确定)?

时间:2018-10-26 01:48:01

标签: bash shell sorting

如果数据如下所示:

if(window.location.href != 'http://example.com/'){
  document.querySelector('.menu-principal')
  .style.backgroundImage = 'none' 
} 

我要按最后一列排序。结果应该是:

a,b,3
c,d,e,f,2
g,1

2 个答案:

答案 0 :(得分:3)

如果最后一个字段是一位数字

$ rev file | sort | rev

您可能需要添加-t, -n来对数字排序进行排序,但不要用一位数字。

或者,对于一般情况为awk

$ awk -F, '{a[$NF]=$0} END{n=asorti(a,d); for(k=1;k<=n;k++) print a[d[k]]}' file

g,1
c,d,e,f,2
a,b,3

如果最后一个字段不是唯一的,这将失败。使用装饰/分类/取消装饰惯用语,您可以改写(如发现自己一样)

$ awk -F, '{print $NF FS $0}' file | sort -n | cut -d, -f2-

在键和记录之间使用字段定界符比较安全,因为您要确保FS不会出现在键本身中。

答案 1 :(得分:0)

我有一个愚蠢但简单的方法:)

  

//如果文件中包含原始数据:〜/ Desktop / 1.log

     

$ awk -F,'{print $ NF,$ 0}'〜/ Desktop / 1.log |排序-n | awk'{print $ 2}'

     

g,1

     

c,d,e,f,2

     

a,b,3