Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Chiffres romains, locale et tri

7 réponses
Avatar
Jacques L'helgoualc'h
Bonjour,

En fr_FR, sort met bien les mouvements du concerto de Prokofiev dans
l'ordre, pourquoi pas pour la symphonie de Dvorak ?

$ LC_ALL=fr_FR sort fichier
Dvorak_Symphony_n°7_in_D_Minor_op.70_I-Allegro
Dvorak_Symphony_n°7_in_D_Minor_op.70_III-Scherzo
Dvorak_Symphony_n°7_in_D_Minor_op.70_II-Poco
Dvorak_Symphony_n°7_in_D_Minor_op.70_IV-Finale
Prokofiev_Piano_Concerto_n°1_in_D-Flat_Major_op.10_I-Allegro
Prokofiev_Piano_Concerto_n°1_in_D-Flat_Major_op.10_II-Andante
Prokofiev_Piano_Concerto_n°1_in_D-Flat_Major_op.10_III-Allegro

$ LC_ALL=C sort fichier
Dvorak_Symphony_n°7_in_D_Minor_op.70_I-Allegro
Dvorak_Symphony_n°7_in_D_Minor_op.70_II-Poco
Dvorak_Symphony_n°7_in_D_Minor_op.70_III-Scherzo
Dvorak_Symphony_n°7_in_D_Minor_op.70_IV-Finale
Prokofiev_Piano_Concerto_n°1_in_D-Flat_Major_op.10_I-Allegro
Prokofiev_Piano_Concerto_n°1_in_D-Flat_Major_op.10_II-Andante
Prokofiev_Piano_Concerto_n°1_in_D-Flat_Major_op.10_III-Allegro

Sarge,
$ sort --version
sort (coreutils) 5.2.1

Merci pour vos lumières,
--
Jacques L'helgoualc'h


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

7 réponses

Avatar
fra-duf-no-spam
Le 12953ième jour après Epoch,
Jacques L'helgoualc'h écrivait:

Bonjour,

En fr_FR, sort met bien les mouvements du concerto de Prokofiev dans
l'ordre, pourquoi pas pour la symphonie de Dvorak ?

$ LC_ALL=fr_FR sort fichier
Dvorak_Symphony_n°7_in_D_Minor_op.70_I-Allegro
Dvorak_Symphony_n°7_in_D_Minor_op.70_III-Scherzo
Dvorak_Symphony_n°7_in_D_Minor_op.70_II-Poco
Dvorak_Symphony_n°7_in_D_Minor_op.70_IV-Finale
Prokofiev_Piano_Concerto_n°1_in_D-Flat_Major_op.10_I-Allegro
Prokofiev_Piano_Concerto_n°1_in_D-Flat_Major_op.10_II-Andante
Prokofiev_Piano_Concerto_n°1_in_D-Flat_Major_op.10_III-Allegro

$ LC_ALL=C sort fichier
Dvorak_Symphony_n°7_in_D_Minor_op.70_I-Allegro
Dvorak_Symphony_n°7_in_D_Minor_op.70_II-Poco
Dvorak_Symphony_n°7_in_D_Minor_op.70_III-Scherzo
Dvorak_Symphony_n°7_in_D_Minor_op.70_IV-Finale
Prokofiev_Piano_Concerto_n°1_in_D-Flat_Major_op.10_I-Allegro
Prokofiev_Piano_Concerto_n°1_in_D-Flat_Major_op.10_II-Andante
Prokofiev_Piano_Concerto_n°1_in_D-Flat_Major_op.10_III-Allegro

Sarge,
$ sort --version
sort (coreutils) 5.2.1



Pas mal! Si Dvorak avait nommé son second mouvement Andante, alors ça
aurait marché. Ne me demande pas pourquoi, je viens de tester ça sur
ma machine (même version de sort), et j'ai pareil que toi. Si je
change Poco pour Andante, alors le tri est correct.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Jacques L'helgoualc'h
François TOURDE a écrit, dimanche 19 juin 2005, à 13:42 :
Jacques L'helgoualc'h écrivait:


[...]
> $ LC_ALL=fr_FR sort fichier
> Dvorak_Symphony_n°7_in_D_Minor_op.70_I-Allegro
> Dvorak_Symphony_n°7_in_D_Minor_op.70_III-Scherzo
> Dvorak_Symphony_n°7_in_D_Minor_op.70_II-Poco
> Dvorak_Symphony_n°7_in_D_Minor_op.70_IV-Finale

Pas mal! Si Dvorak avait nommé son second mouvement Andante, alors ça
aurait marché. Ne me demande pas pourquoi, je viens de tester ça sur
ma machine (même version de sort), et j'ai pareil que toi. Si je
change Poco pour Andante, alors le tri est correct.



C'est un « Poco adagio » (j'ai coupé toute la fin) ; avec « Adagio ma
non troppo » ça irait aussi.

En LC_ALL=C on retrouve le même désordre avec « sort -d », qui ignore
les _- ... Est-ce que ce ne serait pas un bogue local de ce pu^Hcoquin
de sort ?


Sinon, il ne faut pas mettre des « _ » au lieu de « - » après les
chiffres romains dans les listes, le moins est avant les lettres et
chiffres, mais le souligné est après les majuscules :

$ LC_ALL=C sort <(sed s/-/_/g fichier)
Dvorak_Symphony_n°7_in_D_Minor_op.70_III_Scherzo
Dvorak_Symphony_n°7_in_D_Minor_op.70_II_Poco
Dvorak_Symphony_n°7_in_D_Minor_op.70_IV_Finale
Dvorak_Symphony_n°7_in_D_Minor_op.70_I_Allegro
Prokofiev_Piano_Concerto_n°1_in_D_Flat_Major_op.10_III_Allegro
Prokofiev_Piano_Concerto_n°1_in_D_Flat_Major_op.10_II_Andante
Prokofiev_Piano_Concerto_n°1_in_D_Flat_Major_op.10_I_Allegro

M'enfin, ça ne peut marcher que jusqu'à VIII, de toutes façons :/
--
Jacques L'helgoualc'h


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Frédéric Bothamy
* Jacques L'helgoualc'h <lhh+ [2005-06-19 15:10] :
François TOURDE a écrit, dimanche 19 juin 2005, à 13:42 :
> Jacques L'helgoualc'h écrivait:
[...]
> > $ LC_ALL=fr_FR sort fichier
> > Dvorak_Symphony_n°7_in_D_Minor_op.70_I-Allegro
> > Dvorak_Symphony_n°7_in_D_Minor_op.70_III-Scherzo
> > Dvorak_Symphony_n°7_in_D_Minor_op.70_II-Poco
> > Dvorak_Symphony_n°7_in_D_Minor_op.70_IV-Finale
>
> Pas mal! Si Dvorak avait nommé son second mouvement Andante, alors ça
> aurait marché. Ne me demande pas pourquoi, je viens de tester ça sur
> ma machine (même version de sort), et j'ai pareil que toi. Si je
> change Poco pour Andante, alors le tri est correct.

C'est un « Poco adagio » (j'ai coupé toute la fin) ; avec « Adagio ma
non troppo » ça irait aussi.

En LC_ALL=C on retrouve le même désordre avec « sort -d », qui ignore
les _- ... Est-ce que ce ne serait pas un bogue local de ce pu^Hcoquin
de sort ?



À mon avis, probablement pas. D'après la page Info de coreutils :

(1) If you use a non-POSIX locale (e.g., by setting `LC_ALL' to
`en_US'), then `sort' may produce output that is sorted differently
than you're accustomed to. In that case, set the `LC_ALL' environment
variable to `C'. Note that setting only `LC_COLLATE' has two problems.
First, it is ineffective if `LC_ALL' is also set. Second, it has
undefined behavior if `LC_CTYPE' (or `LANG', if `LC_CTYPE' is unset) is
set to an incompatible value. For example, you get undefined behavior
if `LC_CTYPE' is `ja_JP.PCK' but `LC_COLLATE' is `en_US.UTF-8'.

En fait, avec une locale fr_FR, sort utilise les chaînes suivantes pour
faire les comparaisons :

...IAllegro...
...IIPoco...
...IIIScherzo...
...IVFinale...

(on peut s'en rendre compte en remplaçant le '-' par un 'A' par exemple).

"LC_ALL=C sort ..." ou "LC_COLLATE=C sort ..." fait ce qu'il semble
normal en incluant le caractere - dans sa comparaison.


Fred

--
Comment poser les questions de manière intelligente ?
http://www.gnurou.org/documents/smart-questions-fr.html
Comment signaler efficacement un bug ?
http://www.chiark.greenend.org.uk/~sgtatham/bugs-fr.html


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Jacques L'helgoualc'h
Frédéric Bothamy a écrit, dimanche 19 juin 2005, à 15:34 :
* Jacques L'helgoualc'h <lhh+ [2005-06-19 15:10] :
> François TOURDE a écrit, dimanche 19 juin 2005, à 13:42 :
> > Jacques L'helgoualc'h écrivait:
> [...]
> > > $ LC_ALL=fr_FR sort fichier
> > > Dvorak_Symphony_n°7_in_D_Minor_op.70_I-Allegro
> > > Dvorak_Symphony_n°7_in_D_Minor_op.70_III-Scherzo
> > > Dvorak_Symphony_n°7_in_D_Minor_op.70_II-Poco
> > > Dvorak_Symphony_n°7_in_D_Minor_op.70_IV-Finale


[...]
En fait, avec une locale fr_FR, sort utilise les chaînes suivantes pour
faire les comparaisons :

...IAllegro...
...IIPoco...
...IIIScherzo...
...IVFinale...

(on peut s'en rendre compte en remplaçant le '-' par un 'A' par exemple).



Oui, c'est bien ce qui se passe normalement ... /avec/ l'option -d !
Pour -f ou -i l'ordre est correct ;

"LC_ALL=C sort ..." ou "LC_COLLATE=C sort ..." fait ce qu'il semble
normal en incluant le caractere - dans sa comparaison.



... mais ça ne le fait pas avec LC_ALL=fr tout court, /sans/ option pour
sort.

Par ailleurs, en passant de fr_Fr à fr_BE ou fr_CH, c'est de nouveau à
l'endroit, et en pipant via « sed s/_/-/g » ou son contraire, l'ordre
change dans tous les cas ...

Il y a donc un bug, ou une bizarrerie sur l'ordre alphabétique avec
tiret en France ?
--
Jacques L'helgoualc'h


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
fra-duf-no-spam
Le 12953ième jour après Epoch,
Frédéric Bothamy écrivait:

* Jacques L'helgoualc'h <lhh+ [2005-06-19 15:10] :
François TOURDE a écrit, dimanche 19 juin 2005, à 13:42 :
> Jacques L'helgoualc'h écrivait:
[...]
> > $ LC_ALL=fr_FR sort fichier
> > Dvorak_Symphony_n°7_in_D_Minor_op.70_I-Allegro
> > Dvorak_Symphony_n°7_in_D_Minor_op.70_III-Scherzo
> > Dvorak_Symphony_n°7_in_D_Minor_op.70_II-Poco
> > Dvorak_Symphony_n°7_in_D_Minor_op.70_IV-Finale
>
> Pas mal! Si Dvorak avait nommé son second mouvement Andante, alors ça
> aurait marché. Ne me demande pas pourquoi, je viens de tester ça sur
> ma machine (même version de sort), et j'ai pareil que toi. Si je
> change Poco pour Andante, alors le tri est correct.

C'est un « Poco adagio » (j'ai coupé toute la fin) ; avec « Adagio ma
non troppo » ça irait aussi.

En LC_ALL=C on retrouve le même désordre avec « sort -d », qui ignore
les _- ... Est-ce que ce ne serait pas un bogue local de ce pu^Hcoquin
de sort ?



À mon avis, probablement pas. D'après la page Info de coreutils :

(1) If you use a non-POSIX locale (e.g., by setting `LC_ALL' to
`en_US'), then `sort' may produce output that is sorted differently
than you're accustomed to. In that case, set the `LC_ALL' environment
variable to `C'. Note that setting only `LC_COLLATE' has two problems.
First, it is ineffective if `LC_ALL' is also set. Second, it has
undefined behavior if `LC_CTYPE' (or `LANG', if `LC_CTYPE' is unset) is
set to an incompatible value. For example, you get undefined behavior
if `LC_CTYPE' is `ja_JP.PCK' but `LC_COLLATE' is `en_US.UTF-8'.

En fait, avec une locale fr_FR, sort utilise les chaînes suivantes pour
faire les comparaisons :

...IAllegro...
...IIPoco...
...IIIScherzo...
...IVFinale...

(on peut s'en rendre compte en remplaçant le '-' par un 'A' par exemple).

"LC_ALL=C sort ..." ou "LC_COLLATE=C sort ..." fait ce qu'il semble
normal en incluant le caractere - dans sa comparaison.



Ah, si les romains avaient connu le zéro, tu aurais pû générer tes
nombres avec un truc du genre:

printf("%05R", num);

:)

fermat:~$ for i in $(seq 1 8); do printf "%05Rn" $i; done
ZZZZI
ZZZII
ZZIII
ZZZIV
ZZZZV
ZZZVI
ZZVII
ZVIII

Ah ben non.. Le zéro romain est Z :(

/F - Qui ne sait pas quoi faire d'autre avec cette canicule.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Frédéric Bothamy
* Jacques L'helgoualc'h <lhh+ [2005-06-19 16:41] :
Frédéric Bothamy a écrit, dimanche 19 juin 2005, à 15:34 :
> * Jacques L'helgoualc'h <lhh+ [2005-06-19 15:10] :
> > François TOURDE a écrit, dimanche 19 juin 2005, à 13:42 :
> > > Jacques L'helgoualc'h écrivait:
> > [...]
> > > > $ LC_ALL=fr_FR sort fichier
> > > > Dvorak_Symphony_n°7_in_D_Minor_op.70_I-Allegro
> > > > Dvorak_Symphony_n°7_in_D_Minor_op.70_III-Scherzo
> > > > Dvorak_Symphony_n°7_in_D_Minor_op.70_II-Poco
> > > > Dvorak_Symphony_n°7_in_D_Minor_op.70_IV-Finale
[...]
> En fait, avec une locale fr_FR, sort utilise les chaînes suivantes pour
> faire les comparaisons :
>
> ...IAllegro...
> ...IIPoco...
> ...IIIScherzo...
> ...IVFinale...
>
> (on peut s'en rendre compte en remplaçant le '-' par un 'A' par exemple).

Oui, c'est bien ce qui se passe normalement ... /avec/ l'option -d !
Pour -f ou -i l'ordre est correct ;

> "LC_ALL=C sort ..." ou "LC_COLLATE=C sort ..." fait ce qu'il semble
> normal en incluant le caractere - dans sa comparaison.

... mais ça ne le fait pas avec LC_ALL=fr tout court, /sans/ option pour
sort.

Par ailleurs, en passant de fr_Fr à fr_BE ou fr_CH, c'est de nouveau à
l'endroit, et en pipant via « sed s/_/-/g » ou son contraire, l'ordre
change dans tous les cas ...

Il y a donc un bug, ou une bizarrerie sur l'ordre alphabétique avec
tiret en France ?



Je pencherais pour la bizarrerie dans toutes les locales non-POSIX.

Quelques pointeurs pour les recherches :

- le fichier /usr/share/i18n/locales/iso14651_t1 (qui définit le
LC_COLLATE de fr_FR)
- ce message
http://lists.alphanet.ch/pipermail/gull/2003-October/001323.html
- le bogue Debian 203820 (http://bugs.debian.org/203820) sur les tris
dans les locales POSIX et non-POSIX

Pour l'analyse, je ne comprends pas encore bien comment fonctionne
LC_COLLATE, donc au lieu de dire des bêtises, je laisse les autres en
dire à ma place... :-)


Fred

--
Comment poser les questions de manière intelligente ?
http://www.gnurou.org/documents/smart-questions-fr.html
Comment signaler efficacement un bug ?
http://www.chiark.greenend.org.uk/~sgtatham/bugs-fr.html


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Jacques L'helgoualc'h
Frédéric Bothamy a écrit, dimanche 19 juin 2005, à 18:17 :
* Jacques L'helgoualc'h <lhh+ [2005-06-19 16:41] :
> ... mais ça ne le fait pas avec LC_ALL=fr tout court, /sans/ option pour
> sort.
>
> Par ailleurs, en passant de fr_Fr à fr_BE ou fr_CH, c'est de nouveau à
> l'endroit, et en pipant via « sed s/_/-/g » ou son contraire, l'ordre
> change dans tous les cas ...
>
> Il y a donc un bug, ou une bizarrerie sur l'ordre alphabétique avec
> tiret en France ?

Je pencherais pour la bizarrerie dans toutes les locales non-POSIX.

Quelques pointeurs pour les recherches :



Merci,

- le fichier /usr/share/i18n/locales/iso14651_t1 (qui définit le
LC_COLLATE de fr_FR)



ce n'est pas là le problème : quand je passe de fr_FR à fr_BE, les deux
chargent le /même/ iso14651_t1 dans la rubrique COLLATE.

- ce message
http://lists.alphanet.ch/pipermail/gull/2003-October/001323.html



oui, celui-là aborde un problème analogue.

- le bogue Debian 203820 (http://bugs.debian.org/203820) sur les tris
dans les locales POSIX et non-POSIX



Itou. La réponse tient un peu du « c'est comme ça, et on a la flemme de
modifier ».

Maintenant, si c'est POSIXly correct que « rm [A-Z] » efface aussi
le fichier petit f, on peut se demander si c'est une idée géniale de
l'activer par défaut dans un shell --- pour moi, LC_COLLATE et LC_TYPE
concernent plutôt les dictionnaires et assimilés.

Pour l'analyse, je ne comprends pas encore bien comment fonctionne
LC_COLLATE, donc au lieu de dire des bêtises, je laisse les autres en
dire à ma place... :-)



Bah, je peux m'en charger :)

Si j'ai compris quelque chose, ça concerne l'ordre des dictionnaires et
autres annuaires (un sacré bordel d'ailleurs), c'est hors sujet ici, à
mon avis : sort dispose de l'option -d pour ça, et c'est bien ce qui se
passe quand on lui parle belge|suisse|... (les autres je n'ai pas
vérifié) ; par contre, en hexagonal fr_FR, sort-tout-court = sort -d !

Dans l'exemple que j'ai donné, le comportement de sort me semble

- incompatible avec la page de manuel,

- pas très cohérent...

--
Jacques L'helgoualc'h


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact