Recuperer des adresses mail dans un fich txt

Résolu/Fermé
Stef60 Messages postés 251 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 22 avril 2009 - 20 sept. 2007 à 15:23
Stef60 Messages postés 251 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 22 avril 2009 - 5 oct. 2007 à 22:46
Bonjour,
j'ai besoin d'aide.
voici mon probleme:
j'ai un fichier texte de ce type:
[debut]

aaa = toto@ccm.fr,titi@ccm.fr,tutu@ccm.fr
zebrvz = azor@ccm.fr,tutu@ccm.fr,youpi@ccm.fr
fgsdgf = sdgs@cc.fr,riri@yahou.com

[fin]

-------------------------------------------------------------

j'ai besoin de recuperer uniquement les adresses mail pour pouvoir creer une liste de diffusion (donc separé par des virgules)

j'ai créé des batchs mais quand je les enchaines, je me retrouve avec un fichier vide.

je n'y connais pas grand chose, donc si vous pouviez m'orienter.
Merci

30 réponses

C'est parfait.
concernant /mnt/lotsfs/ c'etait une erreur.

j'ai pu qu'a automatiser tout ca (avec un cron je crois)
et la cerise serait d'enlever les doublons

Encore une fois, MERCI
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
21 sept. 2007 à 11:48
Pour les doublons, rajoute ça :
sed -n '/\[groups\]/,/\[Initiation1/p' fich.in |\
grep -o '[[:alnum:].-]*@[ [:alnum:]]*.[ [:alpha:]]*'| uniq |\
sed -e ':a ; N ; $!b a ;s/\n/,/g' > fich.out
;-))
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
21 sept. 2007 à 12:21
Salut,

je comprend pas ta methode.
je dois ecrire tes commandes directement dans mon fichier??


Oui , tu peux l'ecrire directement dans le fichier.
Mais tu peux aussi l'exécuter directement.
0
Stef60 Messages postés 251 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 22 avril 2009 41
21 sept. 2007 à 15:17
la commande uniq n'a rien changé
0

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

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
21 sept. 2007 à 15:22
voilà dans un fichier

root@debian:~# cat stef.sh
#!/bin/bash
perl -ne 'if (1../\[Initiation/){s/.*=\s*//;s/,/\n/g;print if /\@/}' stef2 | uniq
root@debian:~# cat stef2
[groups]

Adm = thierry-externe.henry@ccm.com,zinedine-externe.zizou@ccm.com,michel.platini@ccm.com
Initiation1 = samir-externe.nasri@ccm.com,karim.benzema@ccm.com
projetTestW = karim.benzema@ccm.com
projetTestR =
projettest2R =
projettest2W = nicolas.anelka@ccm.com

[Initiation1:/]
@Adm = rw
@Initiation1 = r
@Initiation1 = r
* =

[Initiation1:/Trunk/toto]
thierry-externe.henry@ccm.com = rw
* =

[projetTest:/]
@projetTestW=r
@projetTestR=r
@adm=r
* =

le résulat - pas des doublons
root@debian:~# sh stef.sh
thierry-externe.henry@ccm.com
zinedine-externe.zizou@ccm.com
michel.platini@ccm.com
samir-externe.nasri@ccm.com
karim.benzema@ccm.com
nicolas.anelka@ccm.com
--
lami20j
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
21 sept. 2007 à 15:25
avec l'ecriture dans le fichier resultat
root@debian:~# cat stef.sh
#!/bin/bash
perl -ne 'if (1../\[Initiation/){s/.*=\s*//;s/,/\n/g;print if /\@/}' stef2 | uniq > resultat

root@debian:~# sh stef.sh
root@debian:~# cat resultat
thierry-externe.henry@ccm.com
zinedine-externe.zizou@ccm.com
michel.platini@ccm.com
samir-externe.nasri@ccm.com
karim.benzema@ccm.com
nicolas.anelka@ccm.com

0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
21 sept. 2007 à 15:25
Oups ;-((

il faut que le fichier soit trié pour repérer les doublons, essaye avec "sort -u" à la place de "uniq" :
sed -n '/\[groups\]/,/\[Initiation1/p' fich.in |grep -o '[[:alnum:].-]*@[ [:alnum:]]*.[ [:alpha:]]*'| sort -u
;-))
0
Stef60 Messages postés 251 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 22 avril 2009 41
21 sept. 2007 à 15:27
j'essaye de me servir de ta methode, mais je n'y arrive pas.
Je t'explique pourquoi.
mon fichier de depart ne doit pas etre modifié sous peine de planter l'application qui le lit.
De plus, j'ai besoin d'obtenir une liste de diffusion donc les adresse doivent etre separées par une virgule.
C'est quoi stef2
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
21 sept. 2007 à 15:59
root@debian:~# cat fichier
[groups]

Adm = thierry-externe.henry@ccm.com,zinedine-externe.zizou@ccm.com,michel.platini@ccm.com
Initiation1 = samir-externe.nasri@ccm.com,karim.benzema@ccm.com
projetTestW = karim.benzema@ccm.com
projetTestR =
projettest2R =
projettest2W = nicolas.anelka@ccm.com

[Initiation1:/]
@Adm = rw
@Initiation1 = r
@Initiation1 = r
* =

[Initiation1:/Trunk/toto]
thierry-externe.henry@ccm.com = rw
* =

[projetTest:/]
@projetTestW=r
@projetTestR=r
@adm=r
* =

root@debian:~# cat stef.sh
#!/bin/bash
perl -ne 'if (1../\[Initiation/){s/.*=\s*//;s/\n/,/;s/,$//;print if /\@/}' fichier | uniq > resultat

root@debian:~# sh stef.sh
root@debian:~# cat resultat
thierry-externe.henry@ccm.com,zinedine-externe.zizou@ccm.com,michel.platini@ccm.comsamir-externe.nasri@ccm.com,karim.benzema@ccm.comkarim.benzema@ccm.comnicolas.anelka@ccm.com
0
Stef60 Messages postés 251 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 22 avril 2009 41
5 oct. 2007 à 22:46
Ca marche impec.

Merci à jipicy et lami20j
les 2 methodes fonctionnent, j'ai pris celle jipicy

et pour info, j'ai meme reussi a faire un cron ;-)

Encore merci pour votre rapidité.
0