Extraire plusieurs chaines de caractères
Résolu
maya79
-
maya79 -
maya79 -
Bonjour,
Par un shell Unix, j'essaie d'extraire depuis un fichier ou une variable toutes les adresses mails présentes :
ex :
To: "Support, De test" <support-detest@mondomaine.com>, maya79@mondom2.fr
CC: "Berthier, Marcel" <m.berthier@mondomaine.com>,
"Barbotin, Paulo"
<paul.barbotin@mondomaine.fr>,
"Le Bec, De lievre" <delievre.lebec@mondomaine.com>,
"Bellenger, Lucette" <l.bellenger@mondomaine.com>
Résultat attendu : support-detest@mondomaine.com maya79@mondom2.fr m.berthier@mondomaine.com paul.barbotin@mondomaine.fr delievre.lebec@mondomaine.com l.bellenger@mondomaine.com
J'ai essayé par un sed pour me débarrasser des chaines de caractères délimités par un espace mais qui ne contient pas le caractère "@", en vain.
J'accepte toute proposition
Merci d'avance
Par un shell Unix, j'essaie d'extraire depuis un fichier ou une variable toutes les adresses mails présentes :
ex :
To: "Support, De test" <support-detest@mondomaine.com>, maya79@mondom2.fr
CC: "Berthier, Marcel" <m.berthier@mondomaine.com>,
"Barbotin, Paulo"
<paul.barbotin@mondomaine.fr>,
"Le Bec, De lievre" <delievre.lebec@mondomaine.com>,
"Bellenger, Lucette" <l.bellenger@mondomaine.com>
Résultat attendu : support-detest@mondomaine.com maya79@mondom2.fr m.berthier@mondomaine.com paul.barbotin@mondomaine.fr delievre.lebec@mondomaine.com l.bellenger@mondomaine.com
J'ai essayé par un sed pour me débarrasser des chaines de caractères délimités par un espace mais qui ne contient pas le caractère "@", en vain.
J'accepte toute proposition
Merci d'avance
A voir également:
- Extraire plusieurs chaines de caractères
- Extraire une video youtube - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Extraire le son d'une vidéo - Guide
- Caractères ascii - Guide
- Caractères spéciaux - Guide
5 réponses
Je ferais un grep (en passant l'expression permettant de rattraper une adresse mail) cut sur le séparateur < (prendre le champ 2) et un cut sur le séparateur > (prendre le champ 1. Dans l'idée ça ressemble à ça (sur la même ligne) :
(à tester)
Bonne chance
grep "[a-zA-Z0-9.\-]*@[a-zA-Z0-9.\-]*" /le/chemin/vers/le/fichier.txt | cut -d'<' -f2 | cut -d'>' -f1
(à tester)
Bonne chance
Merci mamiemando,
Effectivement ca marche en grande partie mais je ne récupère qu'une adresse mail par ligne. Dans mon exemple, on perd l'adresse maya79@mondom2.fr.
D'où l'idée de faire un découpage sur le caractère espace mais je sèche toujours.
Effectivement ca marche en grande partie mais je ne récupère qu'une adresse mail par ligne. Dans mon exemple, on perd l'adresse maya79@mondom2.fr.
D'où l'idée de faire un découpage sur le caractère espace mais je sèche toujours.
Salut,
lami20j@debian:~$ cat mail.txt To: "Support, De test" <support-detest@mondomaine.com>, maya79@mondom2.fr CC: "Berthier, Marcel" <m.berthier@mondomaine.com>, "Barbotin, Paulo" <paul.barbotin@mondomaine.fr>, "Le Bec, De lievre" <delievre.lebec@mondomaine.com>, "Bellenger, Lucette" <l.bellenger@mondomaine.com> lami20j@debian:~$ grep "[a-zA-Z0-9.\-]*@[a-zA-Z0-9.\-]*" mail.txt | cut -d'<' -f2 | cut -d'>' -f1 support-detest@mondomaine.com m.berthier@mondomaine.com paul.barbotin@mondomaine.fr delievre.lebec@mondomaine.com l.bellenger@mondomaine.com lami20j@debian:~$ lami20j@debian:~$ lami20j@debian:~$ lami20j@debian:~$ lami20j@debian:~$ grep -o "[a-zA-Z0-9.\-]*@[a-zA-Z0-9.\-]*" mail.txt support-detest@mondomaine.com maya79@mondom2.fr m.berthier@mondomaine.com paul.barbotin@mondomaine.fr delievre.lebec@mondomaine.com l.bellenger@mondomaine.com
Apparemment ça marche pas si mal :-) De toute façon d'un point de vue expression régulière, ce que j'ai mis est sensé rattraper maya79@mondom2.fr aussi. L'expression régulière que j'ai écrite signifie "une suite de 0 à n caractères parmi a...z A...Z 0...9 . et -, une @, et à nouveau une suite de 0 à n caractères parmi a...z A...Z 0...9 . et -.
Tu es sûr que l'adresse mail que tu ne récupères pas respecte bien cette expression régulière ?
Bonne chance
Tu es sûr que l'adresse mail que tu ne récupères pas respecte bien cette expression régulière ?
Bonne chance
Salut,
ce que j'ai mis est sensé rattraper maya79@mondom2.fr aussi.
Oui, et ça le fait ;-)
C'est le cut qui perd en chemin maya79@....fr puisque cette adresse n'est pas entouré par des chevrons < et >
1er cut
~$ cat mail.txt|grep "[a-zA-Z0-9.\-]*@[a-zA-Z0-9.\-]*" |cut -d'<' -f2
support-detest@mondomaine.com>, maya79@mondom2.fr
m.berthier@mondomaine.com>,
paul.barbotin@mondomaine.fr>,
delievre.lebec@mondomaine.com>,
l.bellenger@mondomaine.com>
2ème cut
ce que j'ai mis est sensé rattraper maya79@mondom2.fr aussi.
Oui, et ça le fait ;-)
C'est le cut qui perd en chemin maya79@....fr puisque cette adresse n'est pas entouré par des chevrons < et >
~$ cat mail.txt To: "Support, De test" <support-detest@mondomaine.com>, maya79@mondom2.fr CC: "Berthier, Marcel" <m.berthier@mondomaine.com>, "Barbotin, Paulo" <paul.barbotin@mondomaine.fr>, "Le Bec, De lievre" <delievre.lebec@mondomaine.com>, "Bellenger, Lucette" <l.bellenger@mondomaine.com>
1er cut
~$ cat mail.txt|grep "[a-zA-Z0-9.\-]*@[a-zA-Z0-9.\-]*" |cut -d'<' -f2
support-detest@mondomaine.com>, maya79@mondom2.fr
m.berthier@mondomaine.com>,
paul.barbotin@mondomaine.fr>,
delievre.lebec@mondomaine.com>,
l.bellenger@mondomaine.com>
2ème cut
~$ cat mail.txt|grep "[a-zA-Z0-9.\-]*@[a-zA-Z0-9.\-]*" |cut -d'<' -f2| cut -d'>' -f1 support-detest@mondomaine.com m.berthier@mondomaine.com paul.barbotin@mondomaine.fr delievre.lebec@mondomaine.com l.bellenger@mondomaine.com
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
hello
$ cat a3 To: "Support, De test" <support-detest@mondomaine.com>, maya79@mondom2.fr CC: "Berthier, Marcel" <m.berthier@mondomaine.com>, "Barbotin, Paulo" <paul.barbotin@mondomaine.fr>, "Le Bec, De lievre" <delievre.lebec@mondomaine.com>, "Bellenger, Lucette" <l.bellenger@mondomaine.com> $ $ perl -wne'while(/[\w\.\-]+@[\w\.\-]+\w+/g){print "$&\n"}' a3 support-detest@mondomaine.com maya79@mondom2.fr m.berthier@mondomaine.com paul.barbotin@mondomaine.fr delievre.lebec@mondomaine.com l.bellenger@mondomaine.com $