Ordenar uma coluna ascendente e outra coluna descendente

3

E por estranho, eu provavelmente quero dizer que é o comportamento pretendido, mas eu não entendo por que , nem como consertar isso.

A tarefa é classificar com base na coluna 5 e, em seguida, na coluna 4.

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

que me dá

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

A Col 5 classifica muito bem, mas o ideal é que eu gostaria que a coluna 4 fosse classificada da mais alta para a mais baixa. Agora é baixo para alto. Ah, parece que preciso do sinal -r ..

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

Agora o Col 5 é classificado na direção oposta, mas Col 4 é bom.

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

Então, basicamente, parece que o -r flag não é aplicado em coluna .. A ordem de reversão de 1 coluna classificada inverte a ordem do outro ..

O que eu gostaria, é ter

RockDoveHPG_Transcript_21   XM_004941221.2  100.000 77  4.17e-86

retornou no topo, o que eu acho que deve ser realizado classificando o Col5 de menor para o maior e, em seguida, o Col 4 de maior para o menor.

    
por Matt MacManes 14.07.2017 / 15:17

2 respostas

5

Ao adicionar -r da maneira como você fez, ele está sendo tratado como uma opção global . De info sort :

A position in a sort field specified with ‘-k’ may have any of the option letters ‘MbdfghinRrV’ appended to it, in which case no global ordering options are inherited by that particular field.

Observe a frase "anexada a ele" , ou seja, para reverter somente o campo 4, use -gk4,4r

    
por 14.07.2017 / 15:31
2

use

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

Observe o r no final.

    
por 14.07.2017 / 15:24

Tags