Extraiga correos electrónicos de un archivo de texto usando el comando Grep en Linux

Consideremos que tenemos un archivo de texto que contiene mucho texto y en ese archivo de texto hay algunas ID de correo electrónico presentes, y tenemos que encontrar todas las ID de correo electrónico presentes en ese archivo de texto. ¿Así que lo que podemos hacer? ¿Cómo podemos encontrar todas las ID de correo electrónico presentes en ese archivo de texto? Una forma de encontrar todas las ID de correo electrónico manualmente, pero este es un proceso aburrido y que consume mucho tiempo. Otra opción es tomar la ayuda del comando grep de Linux para encontrar todas las ID de correo electrónico en archivos de texto.

Comando Grep en Linux

El comando Grep en Linux encuentra el patrón en una string o archivo e imprime todas las líneas o substrings que coinciden con el patrón dado. El patrón proporcionado al comando grep generalmente se conoce como una expresión regular. La sintaxis general del comando grep es la siguiente:

$ grep <pattern> filepath/filename

El formato general de las ID de correo electrónico

Para escribir la expresión regular para proporcionar el comando grep, primero debemos comprender el patrón general o el formato de las ID de correo electrónico.

La forma general de ID de correo electrónico es la siguiente:

<username>@<domain>.<address>

Las ID de correo electrónico tenían principalmente 3 campos de nombre de usuario, dominio y dirección. Escribamos una regresión para cada campo.

Expresión regular para filtrar ID de correo electrónico

Ahora escribamos la expresión regular para filtrar ID de correo electrónico. Comencemos con el nombre de usuario. El nombre de usuario puede contener letras mayúsculas (AZ) y minúsculas (az), dígitos (0-9) y símbolos especiales como punto y guiones bajos. Entonces, la expresión regular para el nombre de usuario será   [a-zA-Z0-9._-] 

El dominio y la dirección generalmente contienen letras mayúsculas (AZ) y minúsculas (az). Entonces, la expresión regular para Dominio y dirección será [a-zA-Z] 

Ahora combinemos la expresión regular de los campos de ID de correo electrónico y hagamos una expresión regular para los ID de correo electrónico. Podemos combinar patrones usando los caracteres \+ . Así que la expresión regular final será:

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

Filtrado de ID de correo electrónico con el comando grep

 Tenemos un patrón de expresión regular. Podemos usar ese patrón para imprimir todas las identificaciones de correo electrónico. Tomemos un archivo de texto por ejemplo.

This is sample text file.
This file contains email IDs.
example1@mail.com this is email ID of person 1.
example2@mail.com this is email ID of person 2.
example@gmail.com is email ID with Gmail domain.
These are the email IDs.

Nombre del archivo: emails_file.txt.

Usemos el comando grep con la expresión regular que creamos en este archivo y veamos el resultado.

$grep -e “[a-zA-Z0-9._-]\+@[a-zA-Z]\+.[a-zA-Z]\+” emails_file.txt

La opción -e se usa para mencionar el patrón para encontrar el filtro en el archivo.

El siguiente es el resultado del comando grep anterior:

 

En el resultado del comando anterior, podemos ver que las ID de correo electrónico se imprimen pero con las ID de correo electrónico, también se imprime el otro texto en la línea de ID de correo electrónico correspondiente.

El comando grep nos da la opción -o para imprimir la string con el único patrón coincidente. Solo tenemos que usar la opción -o con el comando grep para obtener una string que coincida con el patrón dado.

grep -oe “[a-zA-Z0-9._-]\+@[a-zA-Z]\+.[a-zA-Z]\+” correos_archivo.txt

El siguiente es el resultado del comando anterior:

 

Ahora podemos ver que solo se imprimen las ID de correo electrónico. Este es el resultado que queríamos.

Publicación traducida automáticamente

Artículo escrito por nishant0073 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *