我在Linux中有一个这样的文件列表:

440c0402 mfcc.2.ark:15681
440c0401 mfcc.1.ark:501177
440c0401 mfcc.1.ark:9
440c0403 mfcc.3.ark:516849

当我尝试在Linux中使用sort命令对它们进行排序时,我得到:
440c0401 mfcc.1.ark:501177
440c0401 mfcc.1.ark:9
440c0402 mfcc.2.ark:15681
440c0403 mfcc.3.ark:516849

第一行和第二行应该是相反的,因为501177>9。它发生在不同的地方,因为它是一个大列表。有人知道我怎么解决这个问题吗?
提前感谢

最佳答案

更简单的版本

$ sort -t: -k1,1 -k2n file

440c0401 mfcc.1.ark:9
440c0401 mfcc.1.ark:501177
440c0402 mfcc.2.ark:15681
440c0403 mfcc.3.ark:516849

对于固定长度字段,数值或词法排序将表现相同,对于可变长度的数字,它是不同的(没有前导零)!!)。
这将行分成两部分,第一部分固定长度,因此不需要特别注意,但是对于第二部分,您必须添加n后缀以指示数字排序。

10-04 14:53