OVH Cloud OVH Cloud

Tri avec accent

1 réponse
Avatar
truc
Bonjour,

Je souhaiterai trier des nom et prénoms dont certains ont des accents, je
veux les conserver mais qu'ils ne soient pas pris en compte par le tri.

Par exemple :
MARTIN;Cedric
MARTIN;Jacques
MARTIN;Cédric

me donne
MARTIN;Cedric
MARTIN;Cédric
MARTIN;Jacques

Cordialement,

Anthony
--
0% de pub! Que du bonheur et des vrais adhérents !
Vous aussi inscrivez-vous sans plus tarder!!
Message posté à partir de http://www.gyptis.org, BBS actif depuis 1995.

1 réponse

Avatar
Stephane Chazelas
2003-11-24, 12:53(+00), Anthony:
Je souhaiterai trier des nom et prénoms dont certains ont des accents, je
veux les conserver mais qu'ils ne soient pas pris en compte par le tri.

Par exemple :
MARTIN;Cedric
MARTIN;Jacques
MARTIN;Cédric
[...]


C'est à dire que tu veux que les noms avec accents soient triés
ou pas triés ? Si "pas triés", tu veux qu'ils soient mis en vrac
à la fin ?

Pour qu'ils soient triés correctement, il faut spécifier un
LC_COLLATE qui correspond à la langue et au jeu de caractère
utilisé (même avec le même jeu de caractères, l'ordre
alphabétique n'est pas le même en France et en Espagne par
exemple).

Regarde le résultat de "locale -a" pour voir les varleurs
disponibles sur ton système et lance "sort" avec la bonne valeur
de LC_COLLATE:

LC_COLLATE=fr_FR sort < fichier
par exempe.

Si LC_COLLATE vaut C ou POSIX (ou indéfini), le tri est fait
juste sur le numéro d'ordre des octets, donc les lettres avec
accent se retrouvent après les lettres sans accent.

Si tu veux que toutes les lignes qui contiennent un accent
(enfin, des caractères non-ASCII) se retrouvent en vrac à la
fin, tu peux faire:

perl -ne 'BEGIN{open A,"|sort"}
if (/[200-377]/) {$a=$a.$_} else {print A}
END{close A;print $a}'

--
Stéphane ["Stephane.Chazelas" arobase "free.fr"]