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 :

Problème avec grep et regexp


Sujet :

Linux

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 179
    Points : 45
    Points
    45
    Par défaut Problème avec grep et regexp
    Bonjour à tous !

    Oui, je sais, que je suis faible...ne voulant pas passer des heures à chercher une regexp pour faire ce que je voulais, j'ai succombé au générateur de regexp sur txt2re.com. Mais Linux, le Gnou et le Saint Pingouin m'ont puni !

    Je m'explique: J'essaye de faire fonctionner la regexp, donc, magistralement, j'exécute:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #!/bin/sh
    pattern='((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))(?![\\d])'
     
    test=65.43.123.3
     
    echo $test | grep $pattern
    exit
    Mais là j'ai une erreur me rappelant l'usage de grep...j'ai aussi essayé avec egrep et grep -P mais ça ne fonctionne pas non plus...

    Comment se fait-ce ?

    Merci à tous !
    RedVivi

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    ta regexp est pour le perl et non pour le shell. c'est donc normal que le grep du shell te signale une erreur car il y a des variantes entre les regexp du shell et celles du perl

    D'ailleurs, je ne vois aucun générateur de regexp pour le shell sur ton site....

    (perl php python java javascript coldfusion c c++ ruby vb vbscript j# c# c++.net vb.net)

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 179
    Points : 45
    Points
    45
    Par défaut
    Pourtant j'ai RTFM, et sur celui de grep, l'argument grep -P permet d'utiliser des expressions Perl, mais sur mon linux ça ne fonctionne pas, c'est pareil chez vous ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Le partten test est celui que tu souhaites avoir?

    2chiffres.2chiffres.3chiffre.1chiffre?

    test=65.43.123.3

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 179
    Points : 45
    Points
    45
    Par défaut
    Non, n'importe quelle adresse IP

  6. #6
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 179
    Points : 45
    Points
    45
    Par défaut
    Merci mais là j'ai vraiment quelquechose qui m'échappe, j'ai récupérer une regexp du post de l'autre site:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b
    Il s'agit de shell n'est-ce pas ?

    Pourtant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo 32.123.43.254 |grep '\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b
    '
    ne me renvoit rien du tout

    J'ai loupé quelquechose ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Non c'est du perl

    echo 32.123.43.254 |grep -P '\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b'
    32.123.43.254
    ça c'est du shell

    echo 32.123.43.254 | egrep '([1-9][0-9]{0,1}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.(([0-1]?[0-9]{0,2}|2[0-4][0-9]|25[0-5])\.){2}([0-1]?[0-9]{0,2}|2[0-4][0-9]|25[0-5])'
    32.123.43.254

  8. #8
    Invité
    Invité(e)
    Par défaut
    mmmh bizarre chez moi ça fonctionne est j'ai la même version que toi.

    [gnugk ~]$ echo 32.123.43.254 |grep -P '\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b'
    32.123.43.254
    [gnugk ~]$ grep --version
    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.
    Quelle est ta distribution? est-ce que perl est installé sur ta machine?

  9. #9
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 179
    Points : 45
    Points
    45
    Par défaut
    Oui perl est installé, mais c'est ennuyeux cette histoire de grep tout de même.

    Je suis obligé de passer par un fichier contenant les chaines à examiner avec perl ?

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bah pas forcément. Si ton option -P n'est pas supportée, Je t'ai fourni une regex pour le shell. Tu peux utiliser celle-là...

  11. #11
    Invité
    Invité(e)
    Par défaut
    Re,

    Après quelques petites recherches sur internet,
    Voici un post que j'ai trouvé concernant le problème de "grep option -P not supported"

    https://bugs.launchpad.net/debian/+s...rep/+bug/15051

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

Discussions similaires

  1. Problème avec "grep -w"
    Par cantoprod dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 11/10/2011, 13h35
  2. problème avec grep -v
    Par medsup dans le forum Linux
    Réponses: 5
    Dernier message: 17/06/2011, 17h00
  3. Problème avec grep
    Par oumokhtar dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 25/01/2009, 15h55
  4. Problème avec grep sous Cygwin
    Par tnarol dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 09/07/2008, 17h12
  5. Problème avec grep
    Par narmika dans le forum Langage
    Réponses: 9
    Dernier message: 05/10/2007, 18h16

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