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" <[email protected]>, [email protected]
CC: "Berthier, Marcel" <[email protected]>,
"Barbotin, Paulo"
<[email protected]>,
"Le Bec, De lievre" <[email protected]>,
"Bellenger, Lucette" <[email protected]>
Résultat attendu : [email protected] [email protected] [email protected] [email protected] [email protected] [email protected]
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" <[email protected]>, [email protected]
CC: "Berthier, Marcel" <[email protected]>,
"Barbotin, Paulo"
<[email protected]>,
"Le Bec, De lievre" <[email protected]>,
"Bellenger, Lucette" <[email protected]>
Résultat attendu : [email protected] [email protected] [email protected] [email protected] [email protected] [email protected]
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
Configuration: Windows XP Internet Explorer 6.0
A voir également:
- Extraire plusieurs chaines de caractères
- Caractères spéciaux - Guide
- Caracteres speciaux - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Extraire son video - Guide
- Extraire une video youtube - 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 [email protected].
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 [email protected].
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" <[email protected]>, [email protected] CC: "Berthier, Marcel" <[email protected]>, "Barbotin, Paulo" <[email protected]>, "Le Bec, De lievre" <[email protected]>, "Bellenger, Lucette" <[email protected]> lami20j@debian:~$ grep "[a-zA-Z0-9.\-]*@[a-zA-Z0-9.\-]*" mail.txt | cut -d'<' -f2 | cut -d'>' -f1 [email protected] [email protected] [email protected] [email protected] [email protected] lami20j@debian:~$ lami20j@debian:~$ lami20j@debian:~$ lami20j@debian:~$ lami20j@debian:~$ grep -o "[a-zA-Z0-9.\-]*@[a-zA-Z0-9.\-]*" mail.txt [email protected] [email protected] [email protected] [email protected] [email protected] [email protected]
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 [email protected] 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 [email protected] aussi.
Oui, et ça le fait ;-)
C'est le cut qui perd en chemin [email protected] 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
[email protected]>, [email protected]
[email protected]>,
[email protected]>,
[email protected]>,
[email protected]>
2ème cut
ce que j'ai mis est sensé rattraper [email protected] aussi.
Oui, et ça le fait ;-)
C'est le cut qui perd en chemin [email protected] puisque cette adresse n'est pas entouré par des chevrons < et >
~$ cat mail.txt To: "Support, De test" <[email protected]>, [email protected] CC: "Berthier, Marcel" <[email protected]>, "Barbotin, Paulo" <[email protected]>, "Le Bec, De lievre" <[email protected]>, "Bellenger, Lucette" <[email protected]>
1er cut
~$ cat mail.txt|grep "[a-zA-Z0-9.\-]*@[a-zA-Z0-9.\-]*" |cut -d'<' -f2
[email protected]>, [email protected]
[email protected]>,
[email protected]>,
[email protected]>,
[email protected]>
2ème cut
~$ cat mail.txt|grep "[a-zA-Z0-9.\-]*@[a-zA-Z0-9.\-]*" |cut -d'<' -f2| cut -d'>' -f1 [email protected] [email protected] [email protected] [email protected] [email protected]
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
hello
$ cat a3 To: "Support, De test" <[email protected]>, [email protected] CC: "Berthier, Marcel" <[email protected]>, "Barbotin, Paulo" <[email protected]>, "Le Bec, De lievre" <[email protected]>, "Bellenger, Lucette" <[email protected]> $ $ perl -wne'while(/[\w\.\-]+@[\w\.\-]+\w+/g){print "$&\n"}' a3 [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] $