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

Shell et commandes GNU Discussion :

grep avec parenthèses non capturantes


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Par défaut grep avec parenthèses non capturantes
    Bonjour,

    J'extrais les adresses emails d'un fichiers log avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -Eio '([[:alnum:]_.-]+@[[:alnum:]_.-]+?\.[[:alpha:].]{2,6})' monfichier.log
    sauf que mon fichier contient sur chaque ligne 2 adresses emails :
    user=tic@tic.com dest=aaaaa@aaaaa.com
    user=tac@tac.com dest=bbbbb@bbbbb.com
    user=toc@toc.com dest=ccccc@ccccc.com
    Je souhaite extraire seulement les adresses précédée de "user="
    J'ai essayé avec le système de parenthèses non capturantes en rajoutant (?:user=) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -Eio '(?:user=)([[:alnum:]_.-]+@[[:alnum:]_.-]+?\.[[:alpha:].]{2,6})' monfichier.log
    mais ça ne marche pas... y a plus du tout de captures !

    Auriez-vous une idée SVP ?

    Merci d'avance !

  2. #2
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonsoir.

    Un simple cut pourrait convenir ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    idriss-ThinkPad-T420 ~ $ grep -Eio 'user=([[:alnum:]_.-]+@[[:alnum:]_.-]+?\.[[:alpha:].]{2,6})' test.txt | cut -d "=" -f2 
    tic@tic.com
    tac@tac.com
    toc@toc.com
    Cordialement,
    Idriss

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    -P, --perl-regexp
    Interpréter le MOTIF comme une expression rationnelle Perl (PCRE, voir
    ci-dessous). Cette option est expérimentale et grep -P pourrait signaler des
    fonctionnalités non implémentées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ cat plop 
    user=tic@tic.com dest=aaaaa@aaaaa.com
    user=tac@tac.com dest=bbbbb@bbbbb.com
    user=toc@toc.com dest=ccccc@ccccc.com
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ grep -Pio '(user=)\K([[:alnum:]_.-]+@[[:alnum:]_.-]+?\.[[:alpha:].]{2,6})' plop 
    tic@tic.com
    tac@tac.com
    toc@toc.com

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Au fait, les lignes d'où doivent être extraites les adresses, ne contiennent juste que 2 adresses ?

    SI oui, l'expression peut être réduite à grep -Pio '(user=)\K[^ ]*'

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 349
    Par défaut
    Bonjour,
    Comme zipe31 a été plus rapide que moi, j'aurai quand même une question sur la regex d'origine:
    A quoi sert le point d'interrogation ici ?
    Une simple regex comme celle-ci qui exploite la solution de zipe31 ne serait-elle pas suffisante ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -Pio 'user=\K[^@ ]+@[^ ]+' plop
    Sinon, via sed, cela serait un peu plus portable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -n 's/.*user=\([^@ ]\+@[^ ]\+\).*/\1/p' plop
    ou avec la regex d'origine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -n 's/.*user=\([[:alnum:]_.-]\+@[[:alnum:]_.-]\+\?\.[[:alpha:].]\{2,6\}\).*/\1/p'

  6. #6
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Par défaut

    merci beaucoup pour votre aide !

    l'option -P n'est pas prise en charge, j'utilise donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -n 's/.*user=\([^@ ]\+@[^ ]\+\).*/\1/p' plop
    qui me parait plus adapté.


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

Discussions similaires

  1. Appliquer regex avec parenthèse capturantes sur SELECT
    Par vallica dans le forum Requêtes
    Réponses: 3
    Dernier message: 01/02/2008, 12h34
  2. Code : Probleme avec Oui/Non
    Par mat75019 dans le forum Access
    Réponses: 6
    Dernier message: 24/04/2006, 13h36
  3. [WinForms] ComboBox avec valeur non désirée
    Par Ditch dans le forum Général Dotnet
    Réponses: 14
    Dernier message: 11/04/2006, 16h52
  4. Problème de mutex avec Waitforsingleobject non-bloquant
    Par rvzip64 dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 03/11/2005, 11h02
  5. Fichier texte avec codage non standard
    Par giloutho dans le forum Langage
    Réponses: 4
    Dernier message: 15/07/2005, 19h31

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