[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: commande 'sort' et la localisation...



On Thu, Dec 29, 2005 at 11:41:40AM +0100, Jacques L'helgoualc'h wrote:
> [...]
> > > > il est très rare d'avoir besoin du tri lexicographique.
> > > 
> > > C'est tout  de même  utile de  temps en temps,  mais beaucoup  moins que
> > > ls. Il  me semble donc  que le comportement  par défaut de sort  est mal
> > > choisi.
> > 
> > Heu, ça n'a rien à voir, ls n'appelle pas sort.
> 
> Bon, ils utilisent la même définition  de l'ordre... Il me semble que ls
> ne devrait pas oublier le point,  par exemple.

Comme ls et sort utilisent tous les deux le contenu de la variable
LC_COLLATE, il est difficile d'avoir un comportement différent par
défaut.
Ce qu'on peut faire, c'est de changer la définition de fr_FR pour
tenir compte des symboles de ponctuation (et de l'espace ?), et
ajouter une autre variante, p.ex. fr_FR@dict, qui permet d'avoir
accès au tri lexicographique quand on en a besoin.

Je n'avais pas compris ce que tu disais au sujet de « sort -d » dans
tes précédents messages. Pour le français, ça n'a effectivement pas
d'effet, mais pour certaines locales (comme C), elle en a un.
Il faudrait vérifier dans les sources, mais il est probable que si
sort est utilisé avec les options -b/d/f/i, le fichier d'entrée passe
d'abord par un filtre et est stocké dans un fichier intermédiaire.
Par exemple avec -d, seuls les lettres, chiffres et blancs seront
écrits. Avec -f, tout est converti en minuscules (ou majuscules). Etc.
Ensuite, la commande sort va trier ce fichier temporaire en tenant
compte de la locale actuelle, et l'index de permutation des lignes
appliqué au fichier original fournit le résultat attendu.

> C'est ce que tu veux dire par « Possible collisions with repertoire
> maps » ?

Non. Les repertoire maps servaient à remplacer des caractères non-ASCII
par une représentation ASCII. Par exemple, « é » pouvait être représenté
par « <e'> », ce qui permettait d'avoir des fichiers de définitions
entièrement en ASCII, de la même façon qu'on peut écrire \'e en TeX.
Comme ces définitions de symboles n'étaient pas standardisées, il était
possible que 2 repertoire maps différents utilisent la même
représentation pour 2 caractères différents, c'est ce que j'appelais le
risque de collision.
L'utilisation de la notation <Uxxxx> permet d'éviter ce problème.

Denis



Reply to: