
Tengo un archivo en UTF-8 con líneas de letras latinas o cirílicas. Estoy tratando de solucionarlo, ignorando el caso.
Yo he tratado
LC_ALL="ru" sort --ignore-case in.txt
pero todavía tengo líneas cirílicas en el orden incorrecto, mientras que las líneas en latín están bien ordenadas.
Ejemplo de archivo ordenado:
Apple
apple
Banana
banana
...
// but with cyrillic letters i got this:
...
Арбуз
Банан
арбуз
банан
¿Cómo puedo gestionar esto? Gracias de antemano.
Respuesta1
Sospecho que "ru" no es una configuración regional válida. Pruebe el comando lang=ru locale
y vea si hay algún mensaje de error. En mi sistema, "ru" es una configuración regional no válida y "ru_RU" está en iso8859-5; necesitas ru_RU.UTF-8 para que funcione en utf-8.
$ LANG=ru locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
Para encontrar el juego de caracteres utilizado para una configuración regional, puede utilizar la locale
herramienta:
$ LANG=ru_RU locale -c -k charmap collate-codeset
LC_CTYPE
charmap="ISO-8859-5"
LC_COLLATE
collate-codeset="ISO-8859-5"
Tenga en cuenta que las configuraciones regionales se definen en categorías. La categoría LC_COLLATE es la que se utiliza para ordenar. Configurar LC_ALL los anulará todos, o puede configurar uno individualmente usando la variable de entorno nombrada, o puede establecer un valor predeterminado configurando LANG. La mayoría de la gente querrá configurar LANG para uso diario en lugar de LC_ALL.
En el resultado de la locale
herramienta, las categorías establecidas en función de LC_ALL o LANG se mostrarán entre comillas, mientras que las categorías establecidas por sus propias variables (y la propia LC_ALL si está configurada, y LANG si LC_ALL no está configurada) se mostrarán sin comillas. Por ejemplo:
$ LANG=en_US.UTF-8 LC_MESSAGES=ru_RU.UTF-8 locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
...
LC_MESSAGES=ru_RU.UTF-8
...
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Respuesta2
$ cat input.txt
banana
coffee
кофе
Банан
Apple
Coffee
арбуз
apple
Banana
Кофе
банан
Арбуз
$ export LC_ALL=en_US.UTF-8 && sort --ignore-case input.txt
apple
Apple
banana
Banana
coffee
Coffee
арбуз
Арбуз
банан
Банан
кофе
Кофе