BASH中多列文件的反向排序顺序

时间:2013-01-02 10:58:33

标签: linux bash unix sorting awk

我有以下文件:

1 2 3
1 4 5
1 6 7
2 3 5
5 2 1

我希望文件按第二列排序,但是从最大数字(在这种情况下为6)到最小数据。我试过

sort +1 -2 file.dat

但它给了我颠倒的顺序。

结果应该是:

1 6 7
1 4 5
2 3 5
5 2 1
1 2 3

3 个答案:

答案 0 :(得分:46)

sort -nrk 2,2

诀窍。

n表示数字排序,r表示反向顺序,k 2,2表示第二列。

答案 1 :(得分:9)

你试过吗?来自the man page

  

-r, - 反向

          reverse the result of comparisons

答案 2 :(得分:3)

如果提及sort,大多数版-r都有tac选项:

$ sort -nk 2,2 file.dat | tac 
1 6 7
1 4 5
2 3 5
5 2 1
1 2 3

$ sort -nrk 2,2 file.dat 
1 6 7
1 4 5
2 3 5
5 2 1
1 2 3
  

tac - 反向连接和打印文件