Bonjour, J'ai remarqué un truc bizarre, et je n'ai pas trouvé de réponse en cherchant (donc, j'ai certainement mal cherché ;-) ) 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. A priori l'unicode est capable de faire la différence. Je ne comprend donc pas pourquoi le comportement de grep est différent ? Pour information, le fichier contient : artichaud pont des arts Cartouche tarte tatin et la commande est : grep -E '^[a-z]*art' essai Cartouche est trouvé en "en_US.UTF-8", mais pas en "en_US". Merci pour votre aide ! 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.
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.
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? -- Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/> 100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/> Work: CR INRIA - computer arithmetic / SPACES project at LORIA
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.
On 2006-01-04 17:31:39 +0100, Jeremy Monnet wrote:
On 1/4/06, Vincent Lefevre <vincent@vinc17.org> wrote:
grep n'est pas sensible à la casse, sauf si on utilise l'option -i. grep EST sensible sauf si -i ?
Oui, évidemment...
Changer la valeur de LC_COLLATE ne change pas le résultat.
Ah, ça doit juste changer pour les éléments de collation.
Question subsidiaire : comment trouver la facon de trier les caractères propre à une locale (a part faire l'essai) ?
Regarder dans la définition de la locale. :) Mais je n'en sais pas plus. -- Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/> 100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/> Work: CR INRIA - computer arithmetic / SPACES project at LORIA
On 1/4/06, Vincent Lefevre <vincent@vinc17.org> wrote:
Question subsidiaire : comment trouver la facon de trier les caractères propre à une locale (a part faire l'essai) ?
Regarder dans la définition de la locale. :) Mais je n'en sais pas plus.
Tu sais déjà lire une page de man, c'est pas si mal :-( Merci beaucoup pour tes eclaircissements ! 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.
participants (2)
-
Jeremy Monnet
-
Vincent Lefevre