IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Bug dans les expressions régulières ?


Sujet :

Linux

  1. #1
    Membre à l'essai
    Inscrit en
    janvier 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : janvier 2004
    Messages : 20
    Points : 17
    Points
    17
    Par défaut Bug dans les expressions régulières ?
    Question au professionnels de la commande grep.... (lol) :

    Que devrais normalement renvoyer la commande suivante ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep '^[a-z]' /usr/share/dict/words
    Il me semble que sous Unix, on obtient uniquement les lignes qui commencent par une minuscule.
    Sous Linux (RedHat9) j'obtient toutes les lignes... (minuscule ET majuscules)...

    Qlq a-t-il une explication ?

    NB : je sais qu'il est possible de palier à celà en utilisant [[:lower:]], mais c'est quand même moins portable.

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2004
    Messages : 1 296
    Points : 1 774
    Points
    1 774
    Par défaut
    Oui tu devrais obtenir que les lignes avec une minuscule en debut ....

    N'y aurrait t il pas une option pas default sur le shell ou grep sur ta distrib , qui ne tiendrai pas compte de la case ?
    Marc
    Slackware for ever ......
    BASH - KSH ( http://marcg.developpez.com/ksh/ )

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    juin 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2003
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    si tu tapes:
    ca dis quoi ?

  4. #4
    Membre à l'essai
    Inscrit en
    janvier 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : janvier 2004
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Ca dit qu'il n'y a pas d'alias sur grep....

    Sur les autres distrib ca donne quoi ?

    NB 1 :
    J'ai le probleme même après une réinstall toute "fraiche" de RedHat9

    NB 2 :
    Le probleme n'est pas directement lié à grep, mais à l'interprétation par le shell de '[a-z]' car le probleme est identique si j'utilise sed :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed s/[a-z]/X/g monfichier
    remplace TOUT les caractères (a-z + A-Z) par X
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed s/[[:lower:]]/X/g monfichier
    ne remplace QUE les minuscules (a-z) par X[/b]

  5. #5
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    décembre 2002
    Messages
    1 547
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : décembre 2002
    Messages : 1 547
    Points : 1 680
    Points
    1 680
    Par défaut
    Chez moi ça marche bien :

    >grep -V
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    grep (grep de GNU) 2.5.1
     
    Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.
    Ce logiciel est libre; voir les sources pour les conditions de
    reproduction. AUCUNE garantie n'est donnée; tant pour des raisons
    COMMERCIALES que pour RÉPONDRE À UN BESOIN PARTICULIER.
    >cat txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    aaaaaaaaaaaaaaaaaaaaaaaa
    65465464664
    AZERZAERAZERZEAZEAZER
    bbq dfgsdfg sdfg sdg sdf6g4fs4df
    c qzrgf sdgfs5g4sd 5gs
     d gsdf4gsd46gsf
    54654 d4d654d6d4
    >grep '^[a-z]' txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    aaaaaaaaaaaaaaaaaaaaaaaa
    bbq dfgsdfg sdfg sdg sdf6g4fs4df
    c qzrgf sdgfs5g4sd 5gs

  6. #6
    Membre à l'essai
    Inscrit en
    janvier 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : janvier 2004
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    J'ai la même version de grep... mais encore une fois je pense que ca ne viens pas de grep lui même...

    J'ai retapé ton exemple pour etre sûr ! et .... il me retourne aussi la ligne en majuscule !

    C quoi ta distrib ?

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2004
    Messages : 1 296
    Points : 1 774
    Points
    1 774
    Par défaut
    tu n'aurai pas une option dans le shell qui interpreterer mal le ' ?
    essaye de changer de shell :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ksh grep '^[a-z]' /usr/share/dict/words
    pour verifier essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ksh -xv grep '^[a-z]' /usr/share/dict/words
    le -xv devrait afficher les lignes de commande ainsi que chaque ligne avant execution (mode debug)
    si tu es en bash sinon essaye bash avec les même option ....
    Marc
    Slackware for ever ......
    BASH - KSH ( http://marcg.developpez.com/ksh/ )

  8. #8
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    décembre 2002
    Messages
    1 547
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : décembre 2002
    Messages : 1 547
    Points : 1 680
    Points
    1 680
    Par défaut
    je suis sous knoppix (~Debian) Tu peux essayer de faire la comande en protégeant l'expression :

    grep -e "^[a-z]" fichier

    mais ça ne devrait rien changer dans ton cas, m'enfin essaye quand même

  9. #9
    Membre à l'essai
    Inscrit en
    janvier 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : janvier 2004
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Bon j'ai trouvé le pourquoi du comment....

    En fait le comportement est parfaitement normal en ce sens qu'il respecte la spécification IEEE Std 10003.1 2004 ..... et toc !

    Ce comportement est expliqué chez BugZilla :
    http://bugzilla.redhat.com/bugzilla/....cgi?id=104693

    Tous les détails de la spécification ici (prévoir un tube d'aspirine, lol) :
    http://www.unix.org/single_unix_specification/

    Voilà voilà.....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Bug dans les etats
    Par WestMadinina dans le forum IHM
    Réponses: 2
    Dernier message: 21/08/2009, 11h19
  2. bugs dans les tables
    Par Riwalenn dans le forum MS SQL Server
    Réponses: 19
    Dernier message: 01/10/2007, 11h43
  3. [ADO][SqlServer] Pb avec les paramètres dans les expressions
    Par pitango dans le forum Bases de données
    Réponses: 13
    Dernier message: 22/05/2007, 18h34
  4. [ADO] Bug dans les variables
    Par aityahia dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/01/2007, 10h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo