Comando de ordenação não funciona como planejado em números

4

Aqui está o meu list.txt:

a    100
b    300
A    50
e    75
1    10

Eu corri o comando abaixo:

sort -k2,2 list.txt

Isso é o que eu recebi:

1    10
a    100
b    300
A    50
e    75

Estou tentando apenas classificar a segunda coluna. De acordo com a Wikipedia, meu comando acima deveria me dar o resultado abaixo.

a 10
b 50
A 75
e 100
1 300

Estou faltando alguma coisa?

link

    
por Mint.K 21.01.2017 / 04:38

1 resposta

16

Por padrão, sort classifica caractere por caractere em ordem lexicográfica , com base na localidade sequência de agrupamento . No seu exemplo, 100 classifica depois de 10 , mas antes de 50 , porque 1 sempre classifica antes de 5 .

Para classificar em ordem numérica, você precisa adicionar o n specifier

   -n, --numeric-sort
          compare according to string numerical value

por exemplo,

$ sort -k2,2n list.txt
1   10
A   50
e   75  
a   100 
b   300
    
por steeldriver 21.01.2017 / 04:41