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

Une pensée sur “Récupérer les mails d’un fichier sous Linux

  • 18 août 2014 à 15 h 15 min
    Permalink

    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 !

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *