Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting Unix:如何对dat文件进行排序并保留原始行号_Sorting_Unix_Line Numbers - Fatal编程技术网

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