Establecer el orden de clasificación en Shell sort para no ignorar los caracteres especiales

Establecer el orden de clasificación en Shell sort para no ignorar los caracteres especiales

Estoy buscando una solución para ordenar en Postgres, pero parece ser más un problema de intercalación y, por lo tanto, hago la pregunta para el comando de clasificación estándar de Unix.

Tengo los siguientes datos:

A_A1
A\A2
A_A2
A\A1

después de ordenar obtengo:

cat test.txt |sort

A_A1
A\A1
A_A2
A\A2

pero yo quiero:

A_A1
A_A2
A\A1
A\A2

También lo intenté LANG=C cat...pero fue en vano. Entonces, ¿qué regla de clasificación me permitiría no ignorar los caracteres especiales?

Respuesta1

De man sort:

Set LC_ALL=C to get the traditional sort order that uses native byte values.

Entonces:

$ LC_ALL=C sort test.txt
A\A1
A\A2
A_A1
A_A2

por lo que la configuración regional C ordena según el valor del byte.


Necesitas hacer

$ cat test.txt | LC_ALL=C sort

si desea canalizarlo así (pero siempre intente usar la versión del nombre del archivo directamente si está disponible).


La variable de entorno principal que afecta esto es LC_COLLATE. Sin embargo, si LC_ALLse establece, prevalece sobre todos LC_los valores específicos. Si ni LC_ALLni LC_COLLATEestán configurados, vuelve a caer en LANG. Siesono está configurado, su valor predeterminado es locale C.

información relacionada