Defina ordem de agrupamento na ordenação de shell para não ignorar caracteres especiais

1

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 padrão de ordenação Unix.

Eu tenho os seguintes dados:

A_A1
A\A2
A_A2
A\A1

depois do tipo 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 não adiantou. Então, qual regra de agrupamento me permitiria não ignorar os caracteres especiais?

    
por Fabian 19.04.2012 / 18:33

1 resposta

2

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

para que o idioma C classifique o valor do byte.

Você precisa fazer

$ cat test.txt | LC_ALL=C sort

se você quiser canalizar desse jeito (mas sempre tente usar a versão do nome do arquivo diretamente se estiver disponível).

A variável de ambiente principal que afeta isso é LC_COLLATE . Se LC_ALL for definido, ele superará todos os valores LC_ específicos. Se nem LC_ALL nem LC_COLLATE estiver definido, ele voltará a LANG . Se que não estiver definido, o valor padrão será% de C .

    
por 19.04.2012 / 18:39