Você precisa ter a localidade de agrupamento alterada. O comportamento que você descreve é típico de en_US
e muitos outros locais. Corrigir com:
LC_ALL=C sort /tmp/test1
Mais nesta resposta: link
Eu tenho 2 arquivos de texto:
$ cat /tmp/test1
"AAP" bar
"AEM" bar
"AA" bar
"AEO" bar
"A" bar
$ cat /tmp/test2
"AEM" foo
"AAP" foo
"A" foo
"AEO" foo
"AA" foo
Eu quero ordená-los
$ sort /tmp/test1
"AA" bar
"AAP" bar
"A" bar <-- "A" is in position 3
"AEM" bar
"AEO" bar
$ sort /tmp/test2
"AA" foo
"AAP" foo
"AEM" foo
"AEO" foo
"A" foo <-- "A" is in position 5
Por que "A"
acaba na posição 3 em /tmp/test1
e na posição 5 em /tmp/test2
?
Minha expectativa é que cada caractere por coluna seja comparado.
Assim, ao comparar a coluna 3, 'A'
, 'E'
e '"'
serão comparados um contra o outro, e isso seria o determinante final na ordem final de classificação desses dados de teste.
Claramente, minha expectativa está errada, então como sort
funciona, se não da maneira que eu esperava?
Existe uma opção de linha de comando para sort
ou algum outro utilitário que eu possa usar para obter a ordem de classificação desejada?
Você precisa ter a localidade de agrupamento alterada. O comportamento que você descreve é típico de en_US
e muitos outros locais. Corrigir com:
LC_ALL=C sort /tmp/test1
Mais nesta resposta: link
Possivelmente, só olha para caracteres alfabéticos? Portanto, no caso de A
, o próximo caractere alfabético é o b
da barra.
Tags sort