Grep: recherche emails

Résolu/Fermé
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 - 20 août 2007 à 16:44
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 20 août 2007 à 18:02
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
:-))

8 réponses

tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 118
20 août 2007 à 16:49
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
20 août 2007 à 16:53
Salut,
grep -o "to=.*>" fichier
;-))
-1
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
20 août 2007 à 16:54
Mince ça change tout ça ;-(((
-1
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
20 août 2007 à 16:56
grep -o "to=.*>" fichier | sed 's/.*<\(.*\)>/\1/'
;-))
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 118
20 août 2007 à 17:06
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
20 août 2007 à 17:17
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
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 118
20 août 2007 à 17:58
Ben pareil: il s'arrête aux '@' :

www-data
root
www-data

Mais bon pas grave ca marche comme j'ai fait.
-1
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
20 août 2007 à 18:02
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 ;-))
-1