Como funciona o utilitário "classificar"? (por que não funciona da maneira que acho que deveria?)

Como funciona o utilitário "classificar"? (por que não funciona da maneira que acho que deveria?)

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/test1e 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 sortou 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_USmuitas 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 Apróximo caractere alfabético é a bbarra de.

informação relacionada