-je utiliser un fichier trilinux sorte de sortie inattendue
ABC AB-C ABCDEFG-HI
Je reçois
ABC AB-C ABCDEFG-HI
pourquoi n'ordonne la chaîne de tri de cette façon? comment puis-je faire trier '-' par ordre alphabétique?
-je utiliser un fichier trilinux sorte de sortie inattendue
ABC AB-C ABCDEFG-HI
Je reçois
ABC AB-C ABCDEFG-HI
pourquoi n'ordonne la chaîne de tri de cette façon? comment puis-je faire trier '-' par ordre alphabétique?
La solution fournie par @cnicutar est correcte, mais la raison doit être expliquée, c'est pourquoi je donne une nouvelle réponse.
Après la discussion avec @cnicutar où à la fin, je doutais un bogue dans coreutils' sort
Je trouve que this sorting behavior is expected:
A ce genre de points apparaît cassé parce que le cas est plié et la ponctuation est ignorée parce que « en_US .UTF-8 'spécifie ce comportement.
Donc sort
, votre entrée semble être mis en correspondance comme suit:
ABC -> ABC
AB-C -> ABC
ABCDEFG-HI -> ABCDEFGHI
Si vous souhaitez que le tri ASCII pur, vous devez appeler LC_ALL=C sort
(définir temporairement les paramètres régionaux à C
lorsque vous appelez sort
ce qui signifie comportement "standard" sans localisation, vous pouvez également utiliser POSIX
au lieu de C
).
Sur les autres Unix, ce comportement semble différent (testé sur Mac OS X dont les outils utilisateur sont dérivés de FreeBSD), mais LC_ALL=C sort
devrait avoir le même comportement sur tous les systèmes POSIX.
Bon à savoir, merci :-) – cnicutar
Je me souviens :)) essayer
[[email protected] ~]$ LANG=POSIX sort
ABC
AB-C
ABCDEFG-HI
AB-C
ABC
ABCDEFG-HI
Sinon LANG=C
devrait fonctionner.
Dans aucun paramètre de langue, le 'AB-C' devrait apparaître au milieu (pas même avec EBCDIC), donc je parie que ce n'est pas le problème mais plutôt la façon dont user678070 appelle' sort'. – DarkDust
@DarkDust Je l'ai juste essayé avec différents 'LANG's. Pour 'en_US.utf8', il fait ce que l'op dit (j'avais déjà ce problème). Faites un 'locale -a' et choisissez-en un. – cnicutar
@cnicutar: Je viens de l'essayer moi-même et j'obtiens toujours le bon tri. Et étant donné que seuls les caractères ASCII sont utilisés, je doute fort que 'en_US.utf8' aboutisse à ce tri étrange car UTF-8 a ASCII comme sous-ensemble. Avez-vous la sortie "unsorted" en utilisant 'LANG = foobar'? Si c'est le cas, votre tri ne triera pas s'il ne trouve pas les paramètres régionaux. – DarkDust
S'il vous plaît poster l'appel 'sort' exact que vous utilisez, vous êtes probablement mal le faire. – DarkDust