Re: Re : Re : Re : problème de tri avec sort
Bonsoir,
On 08/24/2017 07:50 PM, nicolas.patrois@gmail.com wrote:
> Le 24/08/2017 17:57:43, Samy Mezani a écrit :
>
>> Je viens d'essayer de trier le fichier 2 en ôtant au préalable les
>> guillemets, voici ce que ça donne :
>> 97 32 98 64 116 10
>> 97 99 64 116 10
>> 97 64 116 10
>> 97 32 122 64 116 10
>
>> Ça n'a pas l'air d'être dans un ordre lexicographique. C'est ça que je
>> ne comprend pas. Pour le fichier 1 pas de souci, mais pour le 2, à
>> partir du moment où il y a une 2ème colonne, ça foire…
>
> Tu devrais lire le manuel de sort pour y voir clair.
> Visiblement, il ne se contente pas de tri lexicographique brut mais plutôt sur les mots.
>
Exact, au risque de donner la réponse bien vite, j'aimerais
insister sur le gros *warning* à la fin de la page de manuel :
*** WARNING *** The locale specified by the environment
affects sort order. Set LC_ALL=C to get the traditional
sort order that uses native byte values.
(mille excuses pour la version du manuel dans la langue de
Shakespeare, je n'ai pas installé les locales Françaises.)
Le réglage de la variable d'environnement LC_ALL a la valeur C
permet de retrouver un comportement « cohérent » à la commande
`sort` :
$ export LC_ALL=C
$ sort fichier1
"a b"
"a z"
"a"
"ac"
$ sort fichier2
"a b"@t
"a z"@t
"a"@t
"ac"@t
$ sort -t@ -k1 fichier2
"a b"@t
"a z"@t
"a"@t
"ac"@t
Notez que dans cet ordre les majuscules arrivent avant les
minuscules, donc si vos commandes `ls` ne réagissent pas comme
d'habitude dans cet environnement, c'est normal :
$ touch IMPORTANT impeumoinportant
$ ls
IMPORTANT fichier1 fichier2 impeumoinportant
$ LC_ALL=en_US.UTF-8 ls
fichier1 fichier2 impeumoinportant IMPORTANT
Les problèmes de localisation sont sources de bugs souvent
incompréhensibles et récurrents. C'est triste, c'est tellement
plus pratique d'avoir une machine qui parle comme soi-même. :<
À plus,
--
Étienne Mollier <etienne.mollier@mailoo.org>
Reply to: