Cyb5 157.426
classifica antes de Cyb561 0.425933
, enquanto Cyb5 64.074
ordena após Cyb561 7.11003
, porque, em sua localidade, os espaços em branco são ignorados no primeiro passo de ordenação, portanto, o pedido está mais próximo do dicionário inglês.
Por exemplo, em um dicionário, você teria a priori
entre apiary
e Arrival
.
Aqui, comparando Cyb5 157.426
com Cyb561 0.425933
compara o primeiro Cyb5157.426
com Cyb5610.425933
na primeira passagem porque o primeiro peso do caractere de espaço é IGNORE .
Se você quiser evitar esse processamento especial, altere a localidade para C
, onde o pedido é baseado exclusivamente nos valores do ponto de código dos caracteres.
LC_ALL=C sort -d file
Ou como @Swiss disse, apenas classifique no primeiro campo:
sort -d -k1,1 file
No entanto, observe que o delimitador de campo é a transição de um não-branco para um branco, e os espaços em branco são incluídos nos campos.
Então:
b x
a x
com sort -d -k1,1
ainda seria classificado como
a x
b x
na sua localidade porque os espaços são ignorados, mas como:
b x
a x
Na localidade C, conforme o caractere de espaço é classificado antes de a
.
Você pode querer adicionar a opção -b
para que os espaços em branco iniciais sejam sempre ignorados, independentemente da localidade. Ou, novamente, corrija o código de idioma para C se quiser que as linhas que começam com espaços sejam classificadas primeiro.