Récupérer les mails d’un fichier sous Linux
Récupérer et enregistrer les adresses mails contenues dans un fichier, sous Linux avec une seule ligne de commande.
Nous allons apprendre à récupérer l’ensemble des adresses mails contenues dans un fichier texte et les enregistrer de manière unique et dans l’ordre alphabétique dans un autre fichier. Pour cela on va utiliser les commandes Linux et plus spécifiquement les expressions régulières.
Pour faire cela, il vous faut enregistrer tous vos documents (.xls, .pdf, etc..) contenant des adresses mails dans un unique fichier texte (.txt) que nous appellerons fichierDepart.txt.
Afficher les adresses mails
Pour commencer , on va déjà définir l’expression régulière qui correspond à une adresse mail.
Cette expression est la suivante : [a-z.0-9-_]{1,}@[a-z0-9-_]*.[-a-z0-9-_]*.*[a-z]{2,4} .
Maintenant à l’aide de la commande grep, on va afficher l’ensemble des mails contenus dans le fichier fichierDepart.txt en tapant dans un terminal sous le repertoire contenant le fichier, la ligne de commande :
grep -iEo ‘[a-z.0-9-_]{1,}@[a-z0-9-_]*.[-a-z0-9-_]*.*[a-z]{2,4}’ fichierDepart.txt
Voilà on à l’ensemble des mails, mais avec des doublons et non triés.
Trier les adresses
Pour trier les adresses, on va utiliser la commande sort, qui a pour effet de trier nos adresses dans l’ordre alphabétique. On va aussi utiliser le caractère spécial pipe | , pour que la commande sort se fasse sur le résultat de la commande grep. On va alors taper la ligne de commande :
grep -iEo ‘[a-z.0-9-_]{1,}@[a-z0-9-_]*.[-a-z0-9-_]*.*[a-z]{2,4}’ fichierDepart.txt | sort
Enlever les doublons
Pour enlever les doublons, on va utiliser la commande uniq, on va donc taper la commande :
grep -iEo ‘[a-z.0-9-_]{1,}@[a-z0-9-_]*.[-a-z0-9-_]*.*[a-z]{2,4}’ fichierDepart.txt | sort | uniq
Enregistrer les adresses mails
Maintenant il ne nous reste plus qu’a enregistrer les adresses mails trouvées, qui sont triées et sans doublons. Pour cela, on va utiliser la redirection avec le caractère spécial > , pour enregistrer le résultat de notre grep dans un fichier qu’on a nommé ici fichierMail.txt. On obtient au final la ligne de commande suivante :
grep -iEo ‘[a-z.0-9-_]{1,}@[a-z0-9-_]*.[-a-z0-9-_]*.*[a-z]{2,4}’ fichierDepart.txt | sort | uniq > fichierMail.txt
Cette suite de commande m’a tellement rendu service !
je devais me taper 4 fichiers words (5mo de données en vrac) truffés d’adresses mails clients à la main sinon !
Un grand merci !