Bonjour,
J'aimerai faire un script en bash qui me permettent de supprimer toutes les adresses emails en doubles.
j'aimerai avoir une piste pour commencer ou alors si quelqu'un l'a deja fait fait pourquoi pas .
merci d'avance pour vos reponses
Version imprimable
Bonjour,
J'aimerai faire un script en bash qui me permettent de supprimer toutes les adresses emails en doubles.
j'aimerai avoir une piste pour commencer ou alors si quelqu'un l'a deja fait fait pourquoi pas .
merci d'avance pour vos reponses
Une piste :
Code:PROMPT> man uniq
Bonjour,
Une seconde piste pour la route :Code:sort -u
Prendre d'abord la deuxième piste et ensuite la première ;)
Le pipe est ton ami.
en faites mon fichier d'emails ressemble a ceci:
Avec le uniq, Les lignes identiques doivent être adjacentes pour être supprimées.Code:
1
2
3
4
5 email1@domaine1.fr, email2@domaine2.com, email3@domaine3.fr, email4@domaine4.fr, email2@domaine2.com, email5@domaine5.fr, email7@domaine7.fr, email8@domaine8.com, email1@domaine1.fr
cad
aaaa
aaaa
bbbb
bbbb
donne
aaaa
bbbb
J'aimerai qu le resultat de mon exemple de fichier ressemble a ceci
petite pércision: mon fichier est composé d'un email suivi d'une virgule puis espace un autre emails.Code:
1
2
3
4 email1@domaine1.fr, email2@domaine2.com, email3@domaine3.fr, email4@domaine4.fr, email5@domaine5.fr, email7@domaine7.fr, email8@domaine8.com,
il peut y avoir plusieurs emails suivants les lignes
ex:
la 1ere ligne contiendra 3 emails tandis que la 24 lignes contiendra 1 email
C'est pourquoi il faut fair un sort (tri) avant :mrgreen:
Maintenant, s'il y en a plusieurs par ligne il faudrait remplacer les virgules par des retours à la ligne
Faut-il vraiment conserver la mise ne page de sortie avec plusieurs mails par ligne ? Cela nécessiterait un script plus complexe.Code:tr | ',' '\n'
Non, on peut le formatter du genre
un email suivi d'une virgule puis à la ligne pour un autre email suivi d'une virgule
Voilà ce que ça donne chez moi avec
SortieCode:cat input.txt | sed -e 's/, /\n/g' | sort | uniq
J'étudie le meilleur moyen de supprimer les virgules de finCode:
1
2
3
4
5
6
7 email1@domaine1.fr email2@domaine2.com email3@domaine3.fr, email4@domaine4.fr, email5@domaine5.fr email7@domaine7.fr email8@domaine8.com,
Voilà
Code:cat input.txt | sed -e 's/, /\n/g' -e 's/,*$//' | sort | uniq
Non, justement j'aimerai les gardés
Bonjour,
Si tu souhaites garder les virgules a la fin, il suffit de ne pas les remplacer :
Soucis : les chaines de caracteres suivantes seront considerees comme differentes :
Solution : ne comparer que les caracteres avant la virgule. Mais je doute fort que tu trouves une maniere simple de faire cela...Code:
1
2 email1@domaine1.fr email1@domaine1.fr,
Il suffit de supprimer les virgules puis de les remettre, non ?
:mrgreen: