Sorting Unix:如何对dat文件进行排序并保留原始行号
我有一个包含一千多个条目的大数据文件。我想对它们进行排序,但保留原始行号。比如说,Sorting Unix:如何对dat文件进行排序并保留原始行号,sorting,unix,line-numbers,Sorting,Unix,Line Numbers,我有一个包含一千多个条目的大数据文件。我想对它们进行排序,但保留原始行号。比如说, 1:100 2:120 3:10 4:59 其中,第一个数字是行号,未保存在数据文件中,由冒号与实数分隔。我希望对其进行排序,并将行号绑定到其原始行,输出为: 2:120 1:100 4:59 3:10 如果可能的话,我希望在不创建另一个文件的情况下执行此操作,并且手动编号不是我使用的数据大小的选项。给定一个文件test.dat: 100 120 10 59 。。。命令: $ cat -n test.dat
1:100
2:120
3:10
4:59
其中,第一个数字是行号,未保存在数据文件中,由冒号与实数分隔。我希望对其进行排序,并将行号绑定到其原始行,输出为:
2:120
1:100
4:59
3:10
如果可能的话,我希望在不创建另一个文件的情况下执行此操作,并且手动编号不是我使用的数据大小的选项。给定一个文件
test.dat
:
100
120
10
59
。。。命令:
$ cat -n test.dat | sort --key=2 -nr
2 120
1 100
4 59
3 10
。。。提供您似乎要查找的输出(尽管字段由制表符分隔,如有必要,可以轻松更改):
sort-k=POS1,POS2应该正是您要寻找的。更多详细信息,请参阅“男人排序”。这正是我要找的!谢谢你和paulsm4的“钥匙”命令。我完全忘了把排序移到第二列,我觉得有点傻!很乐意帮忙。如果此答案为您解决了问题,请将其标记为“已接受”,以便其他人不会认为您仍然需要解决方案。
$ cat -n test.dat | sort --key=2 -nr | sed -e's/\t/:/'
2:120
1:100
4:59
3:10