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
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 : Sélectionner tout - Visualiser dans une fenêtre à part PROMPT> man uniq
Bonjour,
Une seconde piste pour la route :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
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 : Sélectionner tout - Visualiser dans une fenêtre à part 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
Sortie
Code : Sélectionner tout - Visualiser dans une fenêtre à part cat input.txt | sed -e 's/, /\n/g' | sort | uniq
J'étudie le meilleur moyen de supprimer les virgules de fin
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part cat input.txt | sed -e 's/, /\n/g' -e 's/,*$//' | sort | uniq
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 email1@domaine1.fr email1@domaine1.fr,
Il suffit de supprimer les virgules puis de les remettre, non ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager