对一列进行升序排序,另一列进行降序排序

对一列进行升序排序,另一列进行降序排序

我所说的奇怪,可能是指这是有意的行为,但我不明白为什么,也不知道如何修复它。

任务是根据第 5 列进行排序,然后根据第 4 列进行排序。

grep -w RockDoveHPG_Transcript_21  xaa.blast| sort  -gk5,5 -gk4,4

这给了我

RockDoveHPG_Transcript_21   XM_004941221.2  70.588  17  4.17e-86
RockDoveHPG_Transcript_21   XM_004941221.2  82.353  17  4.17e-86
RockDoveHPG_Transcript_21   XM_004941221.2  68.182  22  4.17e-86
RockDoveHPG_Transcript_21   XM_004941221.2  80.000  25  4.17e-86
RockDoveHPG_Transcript_21   XM_004941221.2  57.692  26  4.17e-86
RockDoveHPG_Transcript_21   XM_004941221.2  70.588  34  4.17e-86
RockDoveHPG_Transcript_21   XM_004941221.2  100.000 77  4.17e-86
RockDoveHPG_Transcript_21   XM_004941221.2  77.778  18  2.46e-80
RockDoveHPG_Transcript_21   XM_004941221.2  89.474  19  2.46e-80
RockDoveHPG_Transcript_21   XM_004941221.2  70.000  20  2.46e-80
RockDoveHPG_Transcript_21   XM_004941221.2  71.429  21  2.46e-80
RockDoveHPG_Transcript_21   XM_004941221.2  72.000  25  2.46e-80
RockDoveHPG_Transcript_21   XM_004941221.2  72.727  33  2.46e-80
RockDoveHPG_Transcript_21   XM_004941221.2  94.737  76  2.46e-80
...
RockDoveHPG_Transcript_21   XM_004941221.2  78.947  19  1.56e-43
RockDoveHPG_Transcript_21   XM_004941221.2  71.429  21  1.56e-43
RockDoveHPG_Transcript_21   XM_004941221.2  83.544  79  1.56e-43

第 5 列排序很好,但理想情况下我希望第 4 列按从高到低的顺序排序。现在是从低到高。啊,听起来我需要旗帜-r..

grep -w RockDoveHPG_Transcript_21  xaa.blast| sort  -gk5,5 -r -gk4,4

现在第 5 列按相反方向排序,但第 4 列很好。

RockDoveHPG_Transcript_21   XM_004941221.2  83.544  79  1.56e-43
RockDoveHPG_Transcript_21   XM_004941221.2  71.429  21  1.56e-43
RockDoveHPG_Transcript_21   XM_004941221.2  78.947  19  1.56e-43
RockDoveHPG_Transcript_21   XM_004941221.2  68.750  16  1.56e-43
RockDoveHPG_Transcript_21   XM_004941221.2  86.667  15  1.56e-43
RockDoveHPG_Transcript_21   XM_004941221.2  85.526  76  6.22e-44
...
RockDoveHPG_Transcript_21   XM_004941221.2  100.000 77  4.17e-86
RockDoveHPG_Transcript_21   XM_004941221.2  70.588  34  4.17e-86
RockDoveHPG_Transcript_21   XM_004941221.2  57.692  26  4.17e-86
RockDoveHPG_Transcript_21   XM_004941221.2  80.000  25  4.17e-86
RockDoveHPG_Transcript_21   XM_004941221.2  68.182  22  4.17e-86
RockDoveHPG_Transcript_21   XM_004941221.2  82.353  17  4.17e-86
RockDoveHPG_Transcript_21   XM_004941221.2  70.588  17  4.17e-86

所以基本上看起来该-r标志没有按列应用。反转 1 个排序列的顺序会反转另一个排序列的顺序。

我想要的是拥有

RockDoveHPG_Transcript_21   XM_004941221.2  100.000 77  4.17e-86

返回顶部,我认为应该通过将 Col5 从低到高排序,然后将 Col 4 从高到低排序来完成。

答案1

通过按照您所做的方式添加-r,它被视为全局选项。从info sort

用“-k”指定的排序字段中的位置可以附加任何选项字母“MbdfghinRrV”,在这种情况下,该特定字段不会继承全局排序选项。

注意这个短语“附加到它”即仅反转字段 4,使用-gk4,4r

答案2

使用

grep -w RockDoveHPG_Transcript_21  xaa.blast| sort  -gk5,5 -gk4,4r

注意r最后的。

相关内容