2013-09-01 29 views
1

我有一个包含超过一千个条目的大型数据文件。我想对它们进行排序,但保留原始的行号。例如,Unix:如何对dat文件进行排序并保留原始行号

1:100 
2:120 
3:10 
4:59 

其中第一个数字是未保存在数据文件中的行号,用冒号分隔实数。我想对它进行排序,并保持绑定到其原线行号,用的输出:

2:120 
1:100 
4:59 
3:10 

如果可能的话,我想做到这一点,而无需创建另一个文件,和编号他们的手不我正在使用的数据大小的选项。

+1

'sort -k = POS1,POS2'应该正是你要找的。有关更多详细信息,请参阅“男士排序” – paulsm4

回答

2

给定文件test.dat

100 
120 
10 
59 

...命令:

$ cat -n test.dat | sort --key=2 -nr 
    2 120 
    1 100 
    4 59 
    3 10 

...给人的输出,你似乎在寻找(虽然由制表符分隔的字段,如果需要,可以很容易地更改):

$ cat -n test.dat | sort --key=2 -nr | sed -e's/\t/:/' 
    2:120 
    1:100 
    4:59 
    3:10 
+0

这正是我期待的!感谢您和paulsm4的'关键'命令。我已经完全忘记了将这种情况转移到第二栏,我觉得有点傻! –

+0

很高兴提供帮助。如果此答案为您解决问题,请将其标记为“已接受”,以便其他人不会认为您仍需要解决方案才能回答您的问题。 – Simon

相关问题