Por um longo período, pensei que o comportamento padrão do sort
programa estivesse usando a ordem ASCII. No entanto, quando insiro as seguintes linhas sort
sem argumentos:
#
@
Eu tenho:
@
#
Mas, de acordo com a tabela ASCII, #
é 35 e @
é 64. Outro exemplo é:
A
a
E a saída é:
a
A
Alguém pode explicar isso? A propósito, o que é 'ordem de dicionário' ao usar sort -d
?
Respostas:
Parece que você está usando um código de idioma não POSIX.
Experimentar:
e depois
sort
.info sort
diz claramente:fonte
Para determinar a ordem de classificação, basta criar um arquivo com um caractere diferente em cada linha e classificá-lo. A saída resultante informará a ordem de classificação.
fonte
Como
man sort
diz, "ordem do dicionário" significa "considere apenas espaços em branco e caracteres alfanuméricos". Por exemplo, dados os dadoso
sort
comando sem adornos produz(colocando as linhas que começam com os caracteres de espaço e
!
,#
,$
,%
, e@
símbolos 1 à frente das linhas que começam com letras e números, ou seja, caracteres alfanuméricos ), massort -d
produzdogs
ainda é o primeiro, porque começa com espaços, mas os caracteres especiais (pontuação) são ignorados.17
vem antes42
, efox
vem entrebrown
ejumps
, apesar do fato de que42
efox
têm personagens na frente deles, que normalmente se deslocam-los antes do17
.____________
1 na ordem de seus valores ASCII: espaço = 040,
!
= 041,#
= 043,$
= 044,%
= 045 e@
= 0100. Observe que (desconsiderando a barra de espaço) essa ordem é aproximadamente da esquerda para a direita em alguns teclados.fonte