Je pensais que sort
cela trierait les préfixes communs, mais cela ne se produit pas toujours. Prenez cette entrée par exemple:
AT0S*eightieths
AT0S*eyetooth's
AT*ad
AT*Ad
AT*AD
AT*Eydie
AT*eyed
ATF*adv
ATF*ATV
ATF*edify
ATF*Ediva
ATFKT*advocate
ATFKTNK*advocating
ATFKT*outfought
ATFKTS*advocates
ATHT*whitehead
ATHT*Whitehead
AT*id
AT*I'd
AT*Ito
AT*IUD
ATJ*adage
ATNXNS*attention's
ATNXNS*attenuation's
ATNXNS*autoignition's
AT*oat
AT*OD
AT*outweigh
AT*owed
ATP0K*idiopathic
ATP*adobe
ATT*wighted
ATT*witted
ATT*wooded
AT*UT
AT*Uta
AT*wowed
AT*Wyatt
ATX*atishoo
Après sort
, je m'attendrais à ce que tous AT*
finissent en un seul morceau, mais lorsque vous exécutez ces données sort
, l' ==
entrée de sortie . Pourquoi donc? Je ne spécifie aucune option pour ignorer les caractères non alphabétiques ou quoi que ce soit. Justement sort dict > out
.
Ma version de sort
vient de coreutils 8.5-1ubuntu3
.
Réponses:
Cela préserve l'ordre naturel des nombres.
la source
La définition de LC_ALL = C a rétabli l'ordre de tri traditionnel dans mon cas. Paquet: coreutils Version: 8.5-1ubuntu3
la source
LANG=C
fonctionne également. Ce qui me laisse perplexe:LANG
est réglé suren_US.UTF-8
; pourquoi est*
toujours traité spécial ??LC_COLLATE
est le paramètre spécifique àsort
, etc.export
ni même de régler localement et éventuellement de jouer avec autre chose. Il suffit de le mettre dans l'appel à tri:LC_ALL=C sort
. Par exempleecho -e 'a\n*\n*b\nc' | LC_ALL=C sort
, LC_ALL ne sera pas modifié en dehors de l'appel pour trierCela fonctionne comme prévu pour moi (sur cygwin).
sort input > output
résulte enLe tri est-il lié à quelque chose? essayer
\sort
Également
la source
Version: trier (GNU coreutils) 8.26
Je le fais en ligne:
Ou par fonction (modifie le fichier d'origine):
la source
Pour fournir une réponse simple basée sur les commentaires des autres, cela ne change pas votre environnement:
ou
ou leurs combinaisons.
la source
Avec le tri GNU, vous pouvez utiliser
--dictionary-order
:la source