Grep: recherche emails

Résolu
Bonjour,

je patine (encore..) avec sed ou grep;
Je voudrais scruter le fichier de logs postfix; il est de ce type:

Aug 18 06:32:01 dev-apache postfix/local[26522]: D50031A983C: to=<www-data@dev-apache.vmf.headoffice.local>, orig_to=<www-dat
a>, relay=local, delay=0.04, delays=0.03/0.01/0/0.01, dsn=2.0.0, status=sent (delivered to command: procmail -a "$EXTENSION")

Puis récupérer avec egrep l'email spécifié par to=<truc@email.com>

et évidemment j'y arrive po
:-))
Configuration: Windows XP
Firefox 2.0.0.6

8 réponses

  1. J'ai bien trouvé çà:

    grep -Eo " to=<[^>]*" mes_logs

    mais ca me donne :
    to=<root@dev-apache.vmf.headoffice.local
    to=<www-data@dev-apache.vmf.headoffice.local

    et je voudrais exclure le " to=<" du coup pour n'avoir que l'email
    1. Modérateur
      grep -o "to=.*>" fichier | sed 's/.*<\(.*\)>/\1/'
      ;-))
      1. Marche po: y me zappe les "@" et je me retrouve avec :

        www-data
        au lieu de "www-data@dev-apache.vmf.headoffice.local"

        Du coup g fait :

        grep -Eo " to=<[^>]*"|sed 's/ to=<//g'

        :-)

        merci
        1. Modérateur
          Il zappe pas les "@", c'est juste que l'expression matche aussi le second "to=" mais qui commence par "orig_to=" ;-\

          Essaie comme ça alors :
          egrep -o "\bto=.*>" fichier | sed 's/.*<\(.*\)>/\1/'
          ;-))
          1. Ben pareil: il s'arrête aux '@' :

            www-data
            root
            www-data

            Mais bon pas grave ca marche comme j'ai fait.
            1. Modérateur
              Bizarre ;-\
              $ cat plop
              
              Aug 18 06:32:01 dev-apache postfix/local[26522]
              : D50031A983C: to=<www-data@dev-apache.vmf.headoffice.local>,
              orig_to=<www-data>, relay=local, delay=0.04,
              delays=0.03/0.01/0/0.01, dsn=2.0.0,
              status=sent (delivered to command: procmail -a "$EXTENSION")
              
              $ egrep -o "\bto=.*>" plop | sed 's/.*<\(.*\)>/\1/'
              
              www-data@dev-apache.vmf.headoffice.local
              
              $ 
              Comme tu le dis si l'autre syntaxe marche bien... après tout puisqu'on a le choix ;-))