O tipo se comporta de maneira estranha na classificação de maiúsculas e minúsculas

5

O ordenamento é ordenado de forma diferente do que seria de esperar. Eu tenho esse arquivo, chame de text.txt :

a   1
A   1
a   11

(o espaço é sempre um \t )

Eu quero classificá-los em ordem alfabética pela primeira coluna. No entanto, quando eu faço

sort -k 1 text.txt

tudo que eu tenho é o arquivo text.txt, não classificado. Se eu fizer isso pela notação + - obsoleta, o que significa

sort +0 -1 text.txt

funciona como deveria, o que significa que recebo esta saída:

a   1
a   11
A   1

Esse comportamento estranho ocorre somente quando eu tenho linhas que diferem apenas por maiúsculas e minúsculas. O que estou fazendo errado?

    
por Karel Bílek 31.08.2011 / 21:00

2 respostas

5

Você também tem que especificar a coluna final:

$ sort -k1,1 text.txt
a       1
a       11
A       1

Para citar a página man do tipo GNU :

   -k, --key=POS1[,POS2]
          start a key at POS1 (origin 1), end it at POS2 (default  end  of
          line)
    
por 31.08.2011 / 22:27
1

Você certamente encontrou um bug em sort ! Se você não tivesse espaços no arquivo, não haveria como classificá-lo corretamente:

$ cat aaa
a1
A1
a11

$ sort aaa
a1
A1
a11

$ sort -k1,1 aaa
a1
A1
a11

Ainda mais visível com o seguinte:

$ cat bbb
A B b 0
a B b 0
A b b 1

$ sort bbb
a B b 0
A B b 0
A b b 1

$ sort -k1,2 bbb
a B b 0
A b b 1
A B b 0
    
por 01.09.2011 / 11:11

Tags