0

我有一个文件 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

如何用命令行做到这一点?我读到排序命令可用于此目的。但我不知道如何为此使用排序命令。

4

2 回答 2

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

这使得它在这种情况下。

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

于 2013-11-13T15:00:51.903 回答
1

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

sort -k2,2n file.txt
于 2013-11-13T15:03:27.497 回答