Eu esperaria que o bash sort comparasse strings como esta:
- Comece no primeiro caractere (de ambas as strings)
- Se os caracteres forem iguais, prossiga para o próximo caractere
- Se eles forem desiguais, retorne o resultado maior/menor para o algoritmo de classificação
- Se não houver mais caracteres, retorne igual
Por alguma razão, parece que este não é o caso.
Vamos pegar a seguinte entrada:
a
b
.
-
Isso é classificado por bash sort como
-
.
a
b
Agora, para entrada
b.de
bb.de
Eu esperaria o seguinte resultado de classificação:
b.de
bb.de
Porque o primeiro caractere é igual, e para o segundo caractere, .
vem antes b
(como visto no primeiro teste).
Por alguma razão, este não é o caso, as strings são classificadas assim:
bb.de
b.de
Por que está sort
se comportando dessa maneira e existe uma maneira de fazer com que ele se comporte "conforme o esperado"?
Eu testei os mesmos exemplos com python e python classifica conforme esperado.