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.