Tengo 2 archivos 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
quiero ordenarlos
$ 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 qué "A"
termina enposición 3 en/tmp/test1
y enposición 5 en/tmp/test2
?
Mi expectativa es quecada carácter por columnaserán comparados.
Como tal, al comparar la columna 3, 'A'
y 'E'
se '"'
compararán entre sí, y este sería el determinante último en el orden de clasificación final de estos datos de prueba.
Claramente mis expectativas son erróneas, entonces, ¿cómo funciona sort
si no es como esperaba?
¿Existe una opción de línea de comando sort
o alguna otra utilidad que pueda usar para obtener el orden de clasificación que deseo?
Respuesta1
Es necesario cambiar la configuración regional de clasificación. El comportamiento que usted describe es típico de en_US
muchas otras configuraciones regionales. Arreglar con:
LC_ALL=C sort /tmp/test1
Más en esta respuesta:https://stackoverflow.com/questions/6531674/linux-sort-unexpected-output
Respuesta2
¿Posiblemente solo mira caracteres alfabéticos? Por lo tanto, en el caso del A
siguiente carácter alfabético es la b
barra de origen.