Bonjour,
je soumets la question ici avant de soumettre éventuellement un rapport de bug, pour etre bien sur que j'ai pas manqué quelque chose.
Voici le probleme : j'ai des noms du type HELLOhello, constitués d'une premiere partie en majuscules, la seconde en minuscules (si elle existe). Je ne voudrais garder que la première. J'ai donc écris un petit one-liner sed, voila ce que ça donne :
$ echo HELLOa |sed -r "s/([A-Z]+)[a-z]*/\1/g"
renvoie bien HELLO, mais
$ echo HELLOb |sed -r "s/([A-Z]+)[a-z]*/\1/g"
renvoie HELLOb.
je precise : GNU sed version 4.1.5
Donc la question : pourquoi ? :)
# COINcoin
Posté par B16F4RV4RD1N . Évalué à 2.
~$ echo HELLOb |sed -r "s/([A-Z]+)[a-z]*/\1/g"
HELLO
~$ echo HELLObebe |sed -r "s/([A-Z]+)[a-z]*/\1/g"
HELLO
~$ echo HELLOa |sed -r "s/([A-Z]+)[a-z]*/\1/g"
HELLO
un problème sur ta machine ?
Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it
[^] # Re: COINcoin
Posté par castorpilot . Évalué à 1.
ça ne marche toujours pas chez moi (.com)
J'ai essayé sur deux machines différentes, toutes deux mandriva.
A noter : ça marche avec les range posix [:upper:] et [:lower:]. En guise de sparadrap ...
[^] # Re: COINcoin
Posté par B16F4RV4RD1N . Évalué à 2.
Mais tout ce qui commence par "a" fonctionne :
echo HELLOacoco |sed -r "s/([A-Z]+)[a-z]*/\1/g"
alors que cela ne fonctionne pas :
echo HELLOcoco |sed -r "s/([A-Z]+)[a-z]*/\1/g"
Mais si on tape :
echo HELLOcoco |sed -r "s/([A-Z]+)[a-z].../\1/g"
cela retire bien les 4 dernières lettres.
Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it
[^] # Re: COINcoin
Posté par castorpilot . Évalué à 1.
Du coup, je ne sais pas trop à qui remonter le probleme. Sed ? Mandriva ?
Je vais essayer sur d'autres machines pour voir.
[^] # Re: COINcoin
Posté par Samuel Verschelde (site web personnel) . Évalué à 2.
J'ai fait le test sur une Mandriva 2007.1, 2008.1 et 2009.0, et même comportement. Soit c'est voulu (mais là j'ai du mal à voir pourquoi), soit c'est un bug.
# Chémoicamarche
Posté par peck (site web personnel) . Évalué à 1.
# problème lié au shell?
Posté par JoeltheLion (site web personnel) . Évalué à 2.
[^] # Re: problème lié au shell?
Posté par castorpilot . Évalué à 2.
# Locale
Posté par Pascal Terjan (site web personnel) . Évalué à 7.
En français (ou en anglais) c'est aAbBcC...zZ donc A-Z ca fait toutes les majuscules + toutes les minuscules sauf a
[pterjan@plop tmp]$ echo HELLObezbe | sed -r 's/^([A-Z]*).*$/\1/g'
HELLObezbe
[pterjan@plop tmp]$ echo HELLObeabe | sed -r 's/^([A-Z]*).*$/\1/g'
HELLObe
[pterjan@plop tmp]$ echo HELLObeabe | LC_ALL=C sed -r 's/^([A-Z]*).*$/\1/g'
HELLO
[pterjan@plop tmp]$ echo HELLObeabe | LC_ALL=en_US sed -r 's/^([A-Z]*).*$/\1/g'
HELLObe
[^] # Re: Locale
Posté par castorpilot . Évalué à 1.
Conclusion : se fier plutot à [:upper:] et [:lower:], ou passer en locale LC_ALL=C
Encore merci
[^] # Re: Locale
Posté par fearan . Évalué à 2.
je crois que c'est depuis le passage à l'utf8 cette blague, avant ça posait pas de problème
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: Locale
Posté par Kerro . Évalué à 2.
Tout comme les caractères accentués qui sont quasi impossibles à filtrer (même cause), et probablement d'autres plaisanteries sur lesquelles je ne suis pas encore tombé.
Comme rendre inutilisable un très bon outil.
[^] # Re: Locale
Posté par B16F4RV4RD1N . Évalué à 2.
Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it
[^] # Re: Locale
Posté par Pascal Terjan (site web personnel) . Évalué à 3.
C'est pareil avec ls:
$ echo $LC_COLLATE
fr_FR
$ touch A a z Z b
$ ls
a A b z Z
[^] # Re: Locale
Posté par B16F4RV4RD1N . Évalué à 2.
Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.