Bonjour,
Le 02/01/2017 à 13:29, siger a écrit dans le message
<
c461f35a61490395376e...@news.nemoweb.net> :
>>> Ce que je voudrais faire : extraire les adresses mél de manière
>>> automatique. J'ai mis "XML" dans Notepad++, ça met des choses en
>>> couleur, mais je ne vois pas comment ne sélectionner que ce qu'il
>>> y a dans la couleur choisie.
>>>
>>> Y a t-il une possibilité, avec un éditeur ou un traitement de texte
>>> ou autre chose, avec les expressions régulières, ... ?
>
>> Es-tu prêt à installer MinGW pour ça, si tu ne l'as pas déjà ? Parce
>> que ça devrait se faire assez facilement avec des outils en ligne de
>> commande tels que grep, sort, uniq...
>
> (comme il se doit, j'ai oublié de dire que j'utilise XP)
> Je ne connais pas, mais pourquoi pas ? J'en trouverai peut-être d'autres
> usages.
>
>>> Le but est d'avoir ce qu'il y a après le @ afin de trier sur ça et
>>> repérer les redondances afin d'affiner mes tris de spam, car mon
>>> courrielleur ne me permet que de trier pas adresse mél complète.
>
>> Tu devrais donner un bout de fichier typique et le résultat escompté.
>
> Extrait du texte :
> 0cf6ce3157e8b001Sujet_spam_1 <adresse@spameur-1>
> moi@moi<
1b212fdc175e0067...@www.blablabla.com>57e89bc557e89be257e8e74e1dc3012001030UTF-8;;0
> 1dc6cf6ce3957e8b001Sujet_spam_2 <adresse@spameur-2>
> moi@moi<
1473481220.gm3dql...@blobloblo.com>57d38a0457d3c2ba57e8e7137d22012009030UTF-8;;0
> 9aebcf6ce3c57e8b001Sujet_spam_3 <adresse@spameur-3>
> <moi@moi><
201609071316....@bliblibli.fr>57cff71b57d02d1c57e8e70b12b0b012009030UTF-8;;0
Les différents champs ne sont pas clairement définis :
1. comment différencier la partie hexadécimale du sujet ? Dans ton
exemple, la partie hexadécimale n'a pas la même longueur entre les
trois lignes.
2. c'est « moi@moi » ou « <moi@moi> » ?
3. y a-t-il des retours à la ligne ou est-ce coupé par ton logiciel de
news ?
> Je cherche à extraire les adresses mél. Je pourrai facilement supprimer
> la mienne, puis utiliser l'@ comme séparateur pour faire un tableau des
> autres adresses. C'est une méthode.
>
> Le but est d'arriver à lister :
> spameur-1
> spameur-2
> spameur-3
En considérant que l'adresse du spammeur est toujours la première entre
les « <> » et que tout est sur une seule ligne, c'est assez facile
à faire avec sed :
% sed -e 's/^[^<]*<[^@]*@\([^>]*\)>.*$/\1/' < input
spameur-1
spameur-2
spameur-3
Explications :
depuis le début de la ligne (^)
0 ou plusieurs caractères différents de « < » ([^<]*)
un « < » (<)
0 ou plusieurs caractères différents de « @ » ([^@]*)
un « @ » (@)
0 ou plusieurs caractères différents de « > » que l'on capture (\([^>]*\))
un « > » (>)
0 ou plusieurs caractères jusqu'à la fin de la ligne (.*$)
et finalement, on remplace tout cela par la capture (\1)
Pour trier, rajouter « | sort ». Pour supprimer les redondances,
rajouter (après le tri) « | uniq ». L'option « -c » d'uniq permet
d'avoir également un compteur pour chaque domaine.
sed -e 's/^[^<]*<[^@]*@\([^>]*\)>.*$/\1/' < input | sort | uniq -c
Sous Windows, j'ai plutôt tendance à installer Cygwin pour faire ce
genre de choses.
--
Benoit Izac