Durante un largo período, pensé que el comportamiento predeterminado del sortprograma era usar el orden ASCII. Sin embargo, cuando ingreso las siguientes líneas sortsin 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 sortdice 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 sortdice, "orden de diccionario" significa "considerar solo espacios en blanco y caracteres alfanuméricos". Por ejemplo, dados los datosel
sortcomando 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 -dproducedogssigue siendo el primero, porque comienza con espacios, pero se ignoran los caracteres especiales (puntuación).17viene antes42, y sefoxinterpone entrebrownyjumps, a pesar del hecho de que42yfoxtiene 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
sortdebe ser diferente en muchas distribuciones.