Pendant une longue période, j'ai pensé que le comportement par défaut du sort
programme utilisait l'ordre ASCII. Cependant, lorsque j'entre les lignes suivantes sort
sans aucun argument:
#
@
J'ai eu:
@
#
Mais selon le tableau ASCII, #
est 35 et @
est 64. Un autre exemple est:
A
a
Et la sortie est:
a
A
Quelqu'un peut-il expliquer cela? Au fait, qu'est-ce que «l'ordre du dictionnaire» lors de l'utilisation sort -d
?
Réponses:
Il semble que vous utilisiez un environnement local non-POSIX.
Essayer:
et puis
sort
.info sort
dit clairement:la source
Pour déterminer l'ordre de tri, créez simplement un fichier avec un caractère différent sur chaque ligne et triez-le. La sortie résultante vous indiquera l'ordre de tri.
la source
Comme
man sort
dit, «ordre du dictionnaire» signifie «ne considérer que les blancs et les caractères alphanumériques». Par exemple, compte tenu des donnéesles sans ornements
sort
commande produit(mettre les lignes qui commencent par les caractères de l' espace et les
!
,#
,$
,%
et@
symboles 1 avant les lignes qui commencent par les lettres et les chiffres, à savoir, des caractères alphanumériques ), maissort -d
produitdogs
est toujours le premier, car il commence par des espaces, mais les caractères spéciaux (ponctuation) sont ignorés.17
vient avant42
, etfox
entrebrown
etjumps
, malgré le fait que42
etfox
avoir des personnages devant eux qui les déplaceraient normalement avant le17
.____________
1 dans l'ordre de leurs valeurs ASCII: espace = 040,
!
= 041,#
= 043,$
= 044,%
= 045 et@
= 0100. Notez que (sans tenir compte de la barre d'espace), il s'agit approximativement de l'ordre de gauche à droite sur certains claviers.la source
sort
devrait être différent dans de nombreuses distributions.