usando localidade 'C', no entanto, você perde o agrupamento humano (como fazer 'a' e 'A' equivalente).
se você precisar agrupar e manipular alguns caracteres não manipulados pelos dados de localidade da glibc; você pode criar sua própria localidade expandindo o agrupamento padrão.
Você pode copiar a definição da sua localidade atual (por exemplo, / usr / share / i18n / locales / en_US) para outro nome.
Em seguida, edite-o e, na seção LC_COLLATE, tenha:
LC_COLLATE
copy "iso14651_t1"
reorder-after <e>
<U0259> <e>;<PCL>;<MIN>;IGNORE
reorder-after <s>
<U0283> <s>;<PCL>;<MIN>;IGNORE
reorder-end
END LC_COLLATE
compila com: localedef -f ./yourmodifiedfile -t UTF-8 ./someplace
então você pode usar LC_ALL=./someplace
em vez de LC_ALL=C
se você quiser usá-lo regularmente, coloque o diretório criado com as outras localidades padrão (geralmente / usr / share / locale ou / usr / lib / locale) e nomeie-o de maneira padrão (por exemplo, se ele for baseado em en_US, você poderia nomear "en_US @ IPA" por exemplo.
Então você pode configurar suas localidades para ter LC_COLLATE = en_US @ IPA permanentemente (note que você não deve definir LC_ALL se você quiser definir individualmente algumas variáveis LC_ *)
Note também que U + 02C8 é um modificador, e por isso deve ser ignorado corretamente em collation.
Mas se você precisar manipulá-lo como um caractere separado, você pode usá-lo (ascii aspas simples colocadas como iguais (para visualização de agrupamento) como U + 02C8, já que é assim que é digitado com frequência):
# defines a handy symbol, to group together similar chars
collating-symbol <'>
# define
reorder-after <z>
<'>
reorder-after <e>
<U0259> <e>;<PCL>;<MIN>;IGNORE
reorder-after <s>
<U0283> <s>;<PCL>;<MIN>;IGNORE
reorder-after <'>
<U0027> <'>;<BAS>;IGNORE;IGNORE
<U02C8> <'>;<PCL>;IGNORE;IGNORE
reorder-end
As linhas
são: <unicode value> <1st level>;<2d level>;<3d level>;<4th level>
os níveis são usados para classificá-los.
Eu acho (mas não tentei, eu deixei isso como um exercício :)) que se você apenas definir o último nível ele se comportará como quase ignorado para ordenação, mas ainda assim "diferente" do ponto de vista uniq (contanto que como a cadeia de todos os níveis é única, o personagem é único, eu acho).
Geralmente, o 1º nível é um símbolo de agrupamento, como para todas as letras e-like.
O 2º nível é geralmente para o personagem base, existem vários outros símbolos para várias versões acentuadas e (peculiar?) É usado para "especial".
O nível 3D é geralmente usado para diferenciar letras maiúsculas e minúsculas e coisas assim.