On 1/4/06, Vincent Lefevre <vincent@vinc17.org> wrote:
On 2006-01-04 16:20:38 +0100, Jeremy Monnet wrote:
Sur 2 machines je fais un grep, et le résultat différe. Après recherche et essais, il se toruve que le problème est une problèmes de locale : Si LC_CTYPE est a "en_US", grep est sensible a la casse, si LC_CTYPE est a "en_US.UTF-8" grep n'est pas sensible a la casse.
grep n'est pas sensible à la casse, sauf si on utilise l'option -i. grep EST sensible sauf si -i ?
et la commande est : grep -E '^[a-z]*art' essai
Cartouche est trouvé en "en_US.UTF-8", mais pas en "en_US".
Le problème est différent: tu utilises un intervalle, et un "man grep" dit:
Many locales sort characters in dictionary order, and in these locales [a-d] is typically not equivalent to [abcd]; it might be equivalent to [aBbCcDd], for example.
Ici, avec en_US.UTF-8 et même fr_FR.UTF-8, Cartouche n'est pas trouvé. D'autre part, l'ordre du dictionnaire n'est-il pas défini par LC_COLLATE?
Arf, j'ai raté ce paragraphe dans le man :-( Changer la valeur de LC_COLLATE ne change pas le résultat. Sur les 2 machines j'ai regardé les valeurs de toutes les variables indiquées dans le man, seules 4 existaient (LANG, LC_COLLATE, LC_CTYPE, LC_MESSAGES, toutes soit a en_US, soit à en_US.UTF-8). Seul le changement de LC_CTYPE change le comportement. D'autre part LC_ALL n'existe pas. Si je la mets à C (sans changer LC_CTYPE, en en_US.UTF-8), Cartouche n'est pas trouvé. Question subsidiaire : comment trouver la facon de trier les caractères propre à une locale (a part faire l'essai) ? Jeremy -- Linux Registered User #317862 Linux From Scratch Registered User #16571 Please do not send me .doc, .xls, .ppt, as I will *NOT* read them.