排序多列文件

时间:2013-11-13 15:00:13

标签: linux sorting command-line

我有一个文件a.dat如下。

1 0.246102 21 1 0.0408359 0.00357267
2 0.234548 21 2 0.0401056 0.00264361
3 0.295771 21 3 0.0388905 0.00305116
4 0.190543 21 4 0.0371858 0.00427217
5 0.160047 21 5 0.0349674 0.00713894

我想根据第二列中的值对文件进行排序。即输出应该看起来像

    5 0.160047 21 5 0.0349674 0.00713894
    4 0.190543 21 4 0.0371858 0.00427217
    2 0.234548 21 2 0.0401056 0.00264361
    1 0.246102 21 1 0.0408359 0.00357267
    3 0.295771 21 3 0.0388905 0.00305116

如何使用命令行执行此操作?我读到sort命令可以用于此目的。但我无法弄清楚如何使用sort命令。

2 个答案:

答案 0 :(得分:2)

使用sort -k表示您要使用的列:

$ sort -k2 file
5 0.160047 21 5 0.0349674 0.00713894
4 0.190543 21 4 0.0371858 0.00427217
2 0.234548 21 2 0.0401056 0.00264361
1 0.246102 21 1 0.0408359 0.00357267
3 0.295771 21 3 0.0388905 0.00305116

这就是这种情况。

对于将来的参考,请注意(作为indicated by 1_CR),您还可以指出要与sort -k2,2(仅使用第2列)或sort -k2,5(从2到2)使用的列范围5)等。

答案 1 :(得分:1)

请注意,您需要指定要排序的开始和结束字段(在这种情况下为22),如果您需要数字排序,请添加n

sort -k2,2n file.txt