【问题标题】:Unix: How to sort a dat file and keep original line numbersUnix:如何对 dat 文件进行排序并保留原始行号
【发布时间】:2013-09-01 05:13:28
【问题描述】:

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

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

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

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

如果可能的话,我想在不创建另一个文件的情况下执行此操作,并且对于我正在使用的数据大小而言,手动编号不是一个选项。

【问题讨论】:

  • sort -k=POS1,POS2 应该正是您正在寻找的。有关详细信息,请参阅“人排序”。

标签: sorting unix line-numbers


【解决方案1】:

给定一个文件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

【讨论】:

  • 这正是我想要的!感谢您和 paulsm4 的“key”命令。我完全忘记了将排序转移到第二列,我觉得有点傻!
  • 很高兴为您提供帮助。如果此答案为您解决了问题,请将其标记为“已接受”,这样其他人就不会认为您仍然需要解决方案来提出您的问题。
猜你喜欢
  • 2017-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-19
  • 1970-01-01
  • 2018-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多