résultat inattendu de tri gnu
Question
lorsque je tente de trier le fichier texte suivant « entrée »:
test1 3
test3 2
test 4
avec la commande
sort input
la sortie est exactement l'entrée. Voici la sortie de
od -bc input
:
0000000 164 145 163 164 061 011 063 012 164 145 163 164 063 011 062 012
t e s t 1 \t 3 \n t e s t 3 \t 2 \n
0000020 164 145 163 164 011 064 012
t e s t \t 4 \n
0000027
Il est juste un onglet séparé fichier avec deux colonnes. Quand je fais
sort -k 2
La sortie passe à
test3 2
test1 3
test 4
qui est ce que j'attendais. Mais si je fais
sort -k 1
rien ne change par rapport à l'entrée, alors que je me attends à ce « test » pour trier avant « test1 ». Enfin, si je fais
cat input | cut -f 1 | sort
Je reçois
test
test1
test3
comme prévu. Y at-il une explication logique pour cela? Ce qui est une sorte supposée faire exactement par défaut, quelque chose comme:
sort -k 1
Ma version de tri:
sort (GNU coreutils) 7.4
Pas de solution correcte
Autres conseils
A partir des pages de manuel:
* AVERTISSEMENT * Le paramètre régional spécifié par l'environnement affecte Trier commande. LC_ALL = C pour obtenir l'ordre de tri traditionnel qui utilise originaire de les valeurs d'octets.
Il semble donc export LC_ALL = C doit aider