¿Cómo funciona la utilidad "ordenar"? (¿Por qué no funciona como creo que debería?)

¿Cómo funciona la utilidad "ordenar"? (¿Por qué no funciona como creo que debería?)

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/test1y 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 sortsi no es como esperaba?

¿Existe una opción de línea de comando sorto 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_USmuchas 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 Asiguiente carácter alfabético es la bbarra de origen.

información relacionada