Unix:如何对dat文件进行排序并保留原始行号

时间:2013-09-01 05:13:28

标签: sorting unix line-numbers

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

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

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

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

如果可能,我想在不创建其他文件的情况下执行此操作,并且手动编号不是我正在使用的数据大小的选项。

1 个答案:

答案 0 :(得分: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