Durante un largo período, pensé que el comportamiento predeterminado del sort
programa era usar el orden ASCII. Sin embargo, cuando ingreso las siguientes líneas sort
sin ningún argumento:
#
@
Tengo:
@
#
Pero según la tabla ASCII, #
es 35 y @
es 64. Otro ejemplo es:
A
a
Y la salida es:
a
A
¿Alguien puede explicar esto? Por cierto, ¿qué es "orden de diccionario" cuando se usa sort -d
?
Respuestas:
Parece que está utilizando una configuración regional que no es POSIX.
Tratar:
y luego
sort
.info sort
dice claramente:fuente
Para determinar el orden de clasificación, simplemente cree un archivo con un carácter diferente en cada línea y ordénelo. El resultado resultante le dirá el orden de clasificación.
fuente
Como
man sort
dice, "orden de diccionario" significa "considerar solo espacios en blanco y caracteres alfanuméricos". Por ejemplo, dados los datosel
sort
comando sin adornos produce(poniendo las líneas que comienzan con los caracteres de espacio y los
!
,#
,$
,%
, y@
símbolos 1 por delante de las líneas que comienzan con las letras y números, es decir, caracteres alfanuméricos ), perosort -d
producedogs
sigue siendo el primero, porque comienza con espacios, pero se ignoran los caracteres especiales (puntuación).17
viene antes42
, y sefox
interpone entrebrown
yjumps
, a pesar del hecho de que42
yfox
tiene personajes delante de ellos que normalmente los moverían antes del17
.____________
1 en orden de sus valores ASCII: espacio = 040,
!
= 041,#
= 043,$
= 044,%
= 045 y@
= 0100. Tenga en cuenta que (sin tener en cuenta la barra espaciadora) esto es aproximadamente de izquierda a derecha en algunos teclados.fuente
sort
debe ser diferente en muchas distribuciones.