Defina a ordem de agrupamento no shell sort para não ignorar caracteres especiais

Defina a ordem de agrupamento no shell sort para não ignorar caracteres especiais

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_ALLestiver definido, ele supera todos LC_os valores específicos. Se nem LC_ALLnem LC_COLLATEestiverem definidos, ele recorre a LANG. Sequenão está definido, o padrão é locale C.

informação relacionada