如何根据第三列的值对3列的行进行排序?通过排序,bash

时间:2014-05-19 19:11:21

标签: bash shell sorting

我有一个带有这些内容的制表符分隔文件:

1   C45874154  22.8221295411     
2   C56931350  -121.889340344   
3   C22240035  NON              
4   C12541514  -232.106357553   
5   C40783672  87.7466539197  

如何根据第三列中的值(从最低值到第三列中的最高值)对包含3列的行进行排序?

我知道如何使用以下方法对一列进行排序:

sort -n -k 3 file

但我不知道如何将3列组合在一起得到这样的输出:

4  C12541514  -232.106357553
2  C56931350  -121.889340344
1  C45874154  22.8221295411
5  C40783672  87.7466539197
3  C22240035  NON

提前致谢,

1 个答案:

答案 0 :(得分:1)

尝试sort -nk3 -k2,1 aaa(我将您的示例文本命名为aaa)。也就是说,在数字上按第三列排序。然后,按字母顺序对第二列和第一列进行排序。有意义吗?

$ cat -v aaa
1   C45874154  22.8221295411
2   C56931350  -121.889340344
3   C22240035  NON
4   C12541514  -232.106357553
5   C40783672  87.7466539197

$ sort -nk3 -k2,1 aaa
4   C12541514  -232.106357553
2   C56931350  -121.889340344
3   C22240035  NON
1   C45874154  22.8221295411
5   C40783672  87.7466539197