
Estou procurando uma solução para classificação no postgres, mas parece ser mais um problema de agrupamento e, portanto, faço a pergunta para o comando de classificação padrão do Unix.
Eu tenho os seguintes dados:
A_A1
A\A2
A_A2
A\A1
depois da classificação eu recebo:
cat test.txt |sort
A_A1
A\A1
A_A2
A\A2
mas eu quero:
A_A1
A_A2
A\A1
A\A2
Eu também tentei, LANG=C cat...
mas sem sucesso. Então, qual regra de agrupamento me permitiria não ignorar os caracteres especiais?
Responder1
De man sort
:
Set LC_ALL=C to get the traditional sort order that uses native byte values.
Então:
$ LC_ALL=C sort test.txt
A\A1
A\A2
A_A1
A_A2
portanto, a localidade C classifica após o valor do byte.
Você precisa fazer
$ cat test.txt | LC_ALL=C sort
se você quiser canalizar assim (mas sempre tente usar a versão do nome do arquivo diretamente, se estiver disponível).
A principal variável de ambiente que afeta isso é LC_COLLATE
. Porém, se LC_ALL
estiver definido, ele supera todos LC_
os valores específicos. Se nem LC_ALL
nem LC_COLLATE
estiverem definidos, ele recorre a LANG
. Sequenão está definido, o padrão é locale C
.