Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

tri ou sélection spéciale

1 view
Skip to first unread message

siger

unread,
Jan 1, 2017, 3:54:24 PM1/1/17
to
Bonjour,
j'ai un fichier qui semble recenser les info qui sont dans la fenêtre de
mon courrielleur : titre, expéditeur, date etc.

Les infos compréhensibles sont mêlées à d'autres infos.

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, ... ?

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.

Lucas Levrel

unread,
Jan 2, 2017, 6:47:12 AM1/2/17
to
Le 1 janvier 2017, siger a écrit :

> 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...

> 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é.

--
LL
Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)

siger

unread,
Jan 2, 2017, 7:31:18 AM1/2/17
to
Le 02/01/2017 à 12:47, Lucas Levrel a écrit :
> Le 1 janvier 2017, siger a écrit :
>
>> 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

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


Benoit Izac

unread,
Jan 2, 2017, 7:57:52 AM1/2/17
to
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

siger

unread,
Jan 2, 2017, 8:36:49 AM1/2/17
to
Le 02/01/2017 à 13:57, Benoit Izac a écrit :

>> 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.

Pour copier ici, j'ai cru bon de virer des caractère style "carré", ça
explique peut-être ça. Dans NotePad++, ils sont affichas ainsi : SOH en
blanc dans un rectangle noir. Voilà sans modification, les 3 parties avant
le sujet :

0 cf6ce31 57e8b001
1dc6 cf6ce39 57e8b001
9aeb cf6ce3c 57e8b001

J'avais pensé à sélectionné en mode colonne pour effacer ça, mais ils
n'ont pas la même longueur. En fait je vois qu'il y a 5 ou 6 catégories
de même longueur. En triant par colonnes, j'arrive à les regrouper plus
ou moins.


> 2. c'est « moi@moi » ou « <moi@moi> » ?

Il y a les 2. il y a aussi d'autres formes. Mais c'est pas important, je ne
veux pas garder mon adresse.

> 3. y a-t-il des retours à la ligne ou est-ce coupé par ton logiciel de
> news ?

Pas de retour à la ligne. Si j'étends NotePad++ sur 2 écran, j'ai une
ligne par message.

>> 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 :

http://www.gnu.org/software/sed/sed.html
http://gnuwin32.sourceforge.net/packages/sed.htm
Ça a l'air intéressant :-)

> % 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.

Merci !
Je vais regarder ça

siger

unread,
Jan 2, 2017, 8:50:36 AM1/2/17
to
Le 02/01/2017 à 14:35, siger a écrit :

> Pour copier ici, j'ai cru bon de virer des caractère style "carré", ça
> explique peut-être ça. Dans NotePad++, ils sont affichas ainsi : SOH en
> blanc dans un rectangle noir. Voilà sans modification, les 3 parties avant le
> sujet :
>
> 0 cf6ce31 57e8b001
> 1dc6 cf6ce39 57e8b001
> 9aeb cf6ce3c 57e8b001

Tiens, dans la fenêtre de réponse de Nemo les caractères spéciaux
apparaissent, mais pas sur le message posté.
Et là ils réapparaissent dans cette réponse. je ne sais donc pas si tu
les vois. Je réécrit en mettant une étoile à la place :

0*cf6ce31*57e8b001*
1dc6*cf6ce39*57e8b001*
9aeb*cf6ce3c*57e8b001*

Lucas Levrel

unread,
Jan 2, 2017, 9:07:54 AM1/2/17
to
Le 2 janvier 2017, siger a écrit :

> Le 02/01/2017 à 13:57, Benoit Izac a écrit :
>
>> 2. c'est « moi@moi » ou « <moi@moi> » ?
>
> Il y a les 2. il y a aussi d'autres formes. Mais c'est pas important, je ne
> veux pas garder mon adresse.

Dans ce cas, tu peux compléter les commandes données par Benoît par un
« grep -v » qui va supprimer ces lignes (il y a sûrement moyen de faire
avec sed uniquement, mais ça me paraît plus simple et ça te fait découvrir
grep ;-) ) :

grep -v 'moi@moi' < input | sed -e 's/^[^<]*<[^@]*@\([^>]*\)>.*$/\1/' | sort | uniq -c

Évidemment ça suppose que les lignes des spams ne contiennent pas moi@moi.

siger

unread,
Jan 2, 2017, 9:09:42 AM1/2/17
to
Toutes les lignes le contiennent, c'est l'adresse du destinataire.

Benoit Izac

unread,
Jan 2, 2017, 10:53:30 AM1/2/17
to
Bonjour,

Le 02/01/2017 à 14:48, siger a écrit dans le message
<1cfcc772906d8b8b6eaa...@news.nemoweb.net> :
Je vois des ^A (en un caractère) qui correspondent bien au SOH (\001).

--
Benoit Izac

Benoit Izac

unread,
Jan 2, 2017, 10:55:15 AM1/2/17
to
Dans le message <87y3ytf...@izac.org>, le 02/01/2017 à 16:53, j'ai
écrit :

>>> Pour copier ici, j'ai cru bon de virer des caractère style "carré",
>>> ça explique peut-être ça. Dans NotePad++, ils sont affichas ainsi :
>>> SOH en blanc dans un rectangle noir. Voilà sans modification, les
>>> 3 parties avant le sujet :
>>>
>>> 0cf6ce3157e8b001
>>> 1dc6cf6ce3957e8b001
>>> 9aebcf6ce3c57e8b001
>>
>> Tiens, dans la fenêtre de réponse de Nemo les caractères spéciaux
>> apparaissent, mais pas sur le message posté.
>> Et là ils réapparaissent dans cette réponse. je ne sais donc pas si tu
>> les vois. Je réécrit en mettant une étoile à la place :
>>
>> 0*cf6ce31*57e8b001*
>> 1dc6*cf6ce39*57e8b001*
>> 9aeb*cf6ce3c*57e8b001*
>
> Je vois des ^A (en un caractère) qui correspondent bien au SOH (\001).

Par contre mon gnus les a virés...

--
Benoit Izac

siger

unread,
Jan 28, 2017, 8:55:44 AM1/28/17
to
J'ai finalement fait ainsi :

J'ouvre le fichier avec NotePad++
Je sélectionne tout - copier
J'ouvre LibreOffice Writer - coller
Je convertis le texte en tableau avec comme séparateur : @
et à la 2e colonne j'ai tout les "domaines" de la première adresse de
chaque ligne, c'est à dire des spameurs, que je n'ai plus qu'à trier par
ordre alphabétique.
0 new messages