Por que a classificação está mudando a ordem das linhas com chaves de classificação idênticas?

27

Aqui estão os dados:

D 2
B 2
A 2

Quando eu executo este comando:

sort -k2,2 file

gera:

A 2
B 2
D 2

A minha pergunta é que quando especifico apenas a segunda coluna -k2,2 , Por que é que ele classifica pela primeira coluna também? Como todos os valores da segunda coluna são os mesmos, deve ser como está.

    
por dwwdw 07.02.2013 / 21:41

1 resposta

29

Essa é a última comparação de resorts . Ao comparar duas linhas, se todas as chaves forem iguais, então, como último recurso, será realizada uma comparação básica das linhas inteiras ( -r ainda se aplica, mas não as outras opções). Esse comportamento é especificado por POSIX :

Except when the -u option is specified, lines that otherwise compare equal shall be ordered as if none of the options -d, -f, -i, -n, or -k were present (but with -r still in effect, if it was specified) and with all bytes in the lines significant to the comparison. The order in which lines that still compare equal are written is unspecified.

Com o% GNUsort, essa comparação de último recurso pode ser desativada com a opção -s (para estável ).

    
por 07.02.2013 / 21:57

Tags