仅根据其部分对行进行排序

时间:2016-12-11 14:58:56

标签: sorting text-files data-management

假设我有一个如下所示的输入文件:

65CH6      N  990   3.717   2.836   2.649
65CH6   HMN1  991   3.807   2.880   2.647
61VAL      N  894   4.260   3.037   2.527
61VAL     HN  895   4.355   3.063   2.538
61VAL     CA  896   4.189   2.958   2.625
61VAL      C  908   4.057   3.023   2.669
61VAL      O  909   3.952   2.958   2.668
64PHE      N  938   3.817   3.002   2.420
64PHE     HN  939   3.915   3.018   2.412
64PHE     CA  940   3.760   2.868   2.403
64PHE     HA  941   3.682   2.866   2.327

现在我想对这些行进行排序,但仅基于第一列,即 得到这样的东西:

61VAL      N  894   4.260   3.037   2.527
61VAL     HN  895   4.355   3.063   2.538
61VAL     CA  896   4.189   2.958   2.625
61VAL      C  908   4.057   3.023   2.669
61VAL      O  909   3.952   2.958   2.668
64PHE      N  938   3.817   3.002   2.420
64PHE     HN  939   3.915   3.018   2.412
64PHE     CA  940   3.760   2.868   2.403
64PHE     HA  941   3.682   2.866   2.327
65CH6      N  990   3.717   2.836   2.649
65CH6   HMN1  991   3.807   2.880   2.647

而不是sort -g file.dat > file-sorted.dat

61VAL     CA  896   4.189   2.958   2.625
61VAL     HN  895   4.355   3.063   2.538
61VAL      C  908   4.057   3.023   2.669
61VAL      N  894   4.260   3.037   2.527
61VAL      O  909   3.952   2.958   2.668
64PHE     CA  940   3.760   2.868   2.403
64PHE     HA  941   3.682   2.866   2.327
64PHE     HN  939   3.915   3.018   2.412
64PHE      N  938   3.817   3.002   2.420
65CH6   HMN1  991   3.807   2.880   2.647
65CH6      N  990   3.717   2.836   2.649

我用sort -g -k1,5 file.dat > file-sorted.dat得到的东西 是这个

61VAL     CA  896   4.189   2.958   2.625
61VAL     HN  895   4.355   3.063   2.538
61VAL      C  908   4.057   3.023   2.669
61VAL      N  894   4.260   3.037   2.527
61VAL      O  909   3.952   2.958   2.668
64PHE     CA  940   3.760   2.868   2.403
64PHE     HA  941   3.682   2.866   2.327
64PHE     HN  939   3.915   3.018   2.412
64PHE      N  938   3.817   3.002   2.420
65CH6   HMN1  991   3.807   2.880   2.647
65CH6      N  990   3.717   2.836   2.649

1 个答案:

答案 0 :(得分:1)

您必须指定起始键和键数,并且还要禁用"最后的手段"将其他所有内容排序的功能:

sort -g -k1,1 -s file.dat > file-sorted.dat

有关详细信息,请参阅sort man page