奇怪的是,我可能的意思是这是预期的行为,但我不明白为什么,也不明白如何解决它。
任务是根据第 5 列排序,然后是第 4 列。
grep -w RockDoveHPG_Transcript_21 xaa.blast| sort -gk5,5 -gk4,4
Run Code Online (Sandbox Code Playgroud)
这给了我
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
Run Code Online (Sandbox Code Playgroud)
第 5 列的排序很好,但理想情况下,我希望第 4 列从高到低排序。现在从低到高。啊,听起来我需要-r
旗帜..
grep -w RockDoveHPG_Transcript_21 xaa.blast| sort -gk5,5 -r -gk4,4
Run Code Online (Sandbox Code Playgroud)
现在第 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
Run Code Online (Sandbox Code Playgroud)
所以基本上看起来这个-r
标志不是按列应用的。 反转 1 个已排序列的顺序会反转另一个的顺序。
我想要的是
RockDoveHPG_Transcript_21 XM_004941221.2 100.000 77 4.17e-86
Run Code Online (Sandbox Code Playgroud)
在顶部返回,我认为这应该通过将 Col5 从低到高排序,然后将 Col 4 从高到低排序来完成。
通过添加-r
您所做的方式,它被视为全局选项。来自info sort
:
用“-k”指定的排序字段中的位置可以附加任何选项字母“MbdfghinRrV”,在这种情况下,该特定字段不会继承全局排序选项。
请注意短语“附加到它”,即仅反转字段 4,使用-gk4,4r
用
grep -w RockDoveHPG_Transcript_21 xaa.blast| sort -gk5,5 -gk4,4r
Run Code Online (Sandbox Code Playgroud)
注意r
最后。