GNU/Linux >> Tutoriels Linux >  >> Linux

Comment extraire des adresses e-mail d'un fichier texte sous Linux

Les fichiers texte contiennent un flux continu de caractères dans aucun format prédéfini. Bien que certains formats de fichiers se soient développés au-dessus des fichiers texte (par exemple, JSON , YAML ), qui s'attendent à ce que les données textuelles soient présentes dans un format particulier, normal '.txt' les fichiers n'ont pas de telles conventions. Par conséquent, la récupération d'une ligne, d'une phrase ou d'une chaîne spécifique à partir d'un fichier texte doit être effectuée à l'aide d'outils Linux génériques.

La commande grep sous Linux est utilisé pour trouver une sous-chaîne ou un motif de texte, dans une chaîne ou un fichier. Il imprime la ligne où se trouve la sous-chaîne.

La syntaxe d'utilisation de la commande grep est le suivant :

$ grep <substring> <filename/standard input>

Par exemple, pour rechercher la sous-chaîne "Nom ” dans le fichier ‘test.txt ‘ (dont le contenu est affiché dans la capture d'écran), exécutez ce qui suit.

$ grep "Name" test.txt

Aujourd'hui, nous allons voir comment extraire Email adresses des fichiers texte à l'aide de la commande grep .

Comme nous le savons, une adresse Email est présente au format :

<user_id>@<domain>.<subdomain>

Ici, user_id est une chaîne d'identification unique choisie par l'utilisateur, et le domaine et le sous-domaine représentent le fournisseur de services de messagerie (par exemple, gmail.com ).

Les noms de domaine et de sous-domaine ne peuvent contenir que des alphabets, alors que user_id peut contenir des lettres, des caractères numériques ainsi que d'autres caractères courants tels que le point (.) et soulignez (_) .

Comme il s'agit d'un motif défini à rechercher, nous pouvons utiliser le '-e' drapeau de grep, qui nous permet de spécifier des modèles d'expression régulière au lieu de sous-chaînes, pour l'extraction à partir d'un fichier.

Ainsi, la syntaxe de grep avec '-e' est :

$ grep -e <regular_expression> <filename/standard input>

Sur la base du modèle d'adresse e-mail évoqué précédemment, nous pouvons former l'expression régulière suivante :

[a-zA-Z0-9._]\+@[a-zA-Z]\+.[a-zA-Z]\+

Ici, 'a-zA-Z' représente n'importe quel alphabet, '0-9' représente des nombres, '._' représentent un point ou un trait de soulignement. Notez que les caractères '\+' représentent que le jeu de caractères entre parenthèses doit apparaître une ou plusieurs fois.

Nous allons exécuter cette expression régulière pour extraire les adresses e-mail du fichier 'test2.txt ‘.

Tout d'abord, affichez le contenu du fichier test2.txt sont :

$ cat test2.txt

Ensuite, exécutez la commande suivante pour extraire les adresses e-mail du fichier.

$ grep -e "[a-zA-Z0-9._]\+@[a-zA-Z]\+.[a-zA-Z]\+" test2.txt

Comme nous pouvons le voir, les adresses e-mail ont été identifiées avec succès par Grep. Cependant, ils sont affichés avec la ligne complète dans le fichier.

Pour afficher uniquement les identifiants de messagerie trouvés, utilisez le '-o' drapeau avec '-e' comme indiqué.

$ grep -oe "[a-zA-Z0-9._]\+@[a-zA-Z]\+.[a-zA-Z]\+" test2.txt
Conclusion

Dans cet article, nous avons vu comment extraire des adresses e-mail d'un fichier texte sous Linux, à l'aide de l'outil de ligne de commande pratique Grep . Ces adresses e-mail peuvent ensuite également être écrites dans un fichier à l'aide de la redirection.

Si vous avez des questions ou des commentaires, faites-le nous savoir dans les commentaires ci-dessous.


Linux
  1. Répertorier toutes les adresses e-mail dans un fichier avec grep

  2. Comment supprimer les "données binaires" d'un fichier texte (par exemple, Bash_history) ?

  3. Comment distinguer le binaire des fichiers texte sous Linux

  4. Comment extraire la partie texte d'un fichier binaire sous linux/bash ?

  5. Comment extraire un fichier .dmg sous Linux ?

Comment créer des répertoires à partir d'un fichier texte sous Linux

Comment supprimer le mot de passe d'un fichier PDF sous Linux

Comment afficher les données d'un fichier texte sous Linux

Comment ajouter du texte au début du fichier sous Linux

Comment supprimer les caractères (^M) d'un fichier sous Linux

Comment extraire le fichier Tar.xz sur la ligne de commande Linux