我需要使用字母数字id对数据进行排序。使用sort -n -k1,1进行排序,并且该命令的变体不提供按数字顺序排序的结果。有任何想法吗?需要对第一列进行排序。
数据
w51591 w53646 0.87389
w1874 w1878 -0.80693
w40054 w40193 -0.89137
w51571 w56635 -0.43085
w1728 w53651 0.9258
w10567 w40186 -0.9174
w10569 w40038 -0.916
排序-n -k1,1
的当前输出w10567 w40186 -0.9174
w10569 w40038 -0.916
w1728 w53651 0.9258
w1874 w1878 -0.80693
w40054 w40193 -0.89137
w51571 w56635 -0.43085
w51591 w53646 0.87389
另外,有没有办法对第一列进行排序,然后按第二列进行排序,如果我在第一列中重复了id?
谢谢,祝节日快乐。
答案 0 :(得分:2)
您可以将排序字段的起始字符指定为2以跳过w
sort -n -k1.2,1
按第一个字段排序,然后按第二个
排序sort -k1.2,1n -k2.2,2n
答案 1 :(得分:1)
要正确排序第一列:
sort -k 2 -n -t 'w' input.txt
这会将字段分隔符更改为“w”,这是一种从输入中删除该主要字符的黑客行为。您在第一列中排序的数字将变为字段2(因此-k 2
)。
我不知道用sort
来完成问题的第二部分(在第二列上排序)的方法,我想你可能需要一个更复杂的解决方案,就像一个简短的Perl脚本。
编辑:请参阅下面1_CR的答案,了解对两列进行排序的方法。