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 classificá-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 emposição 3 em/tmp/test1
e emposição 5 em/tmp/test2
?
Minha expectativa é quecada caractere por colunaserá comparado.
Como tal, ao comparar a coluna 3, 'A'
e 'E'
serão '"'
comparados entre si, e este seria o determinante final na ordem de classificação final destes dados de teste.
É claro que minha expectativa está errada, então como funciona sort
, se não da maneira que eu esperava?
Existe uma opção de linha de comando sort
ou algum outro utilitário que eu possa usar para obter a ordem de classificação desejada?
Responder1
Você precisa alterar o local do agrupamento. O comportamento que você descreve é típico de en_US
muitas outras localidades. Corrija com:
LC_ALL=C sort /tmp/test1
Mais nesta resposta:https://stackoverflow.com/questions/6531674/linux-sort-unexpected-output
Responder2
Possivelmente ele olha apenas para caracteres alfabéticos? Portanto, no caso do A
próximo caractere alfabético é a b
barra de.