GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo extraer direcciones de correo electrónico de un archivo de texto en Linux

Los archivos de texto contienen un flujo continuo de caracteres sin ningún formato predefinido. Si bien algunos formatos de archivo se han desarrollado sobre los archivos de texto (p. ej., JSON , YAML ), que esperan que los datos de texto estén presentes en un formato particular, normal '.txt' los archivos no tienen tales convenciones. Por lo tanto, la recuperación de una línea, frase o cadena específica de un archivo de texto debe realizarse con herramientas genéricas de Linux.

El comando grep en Linux se usa para encontrar una subcadena o un patrón de texto, en una cadena o un archivo. Imprime la línea donde se encuentra la subcadena.

La sintaxis para usar el comando grep es el siguiente:

$ grep <substring> <filename/standard input>

Por ejemplo, para buscar la subcadena "Nombre ” en el archivo ‘test.txt ' (cuyo contenido se muestra en la captura de pantalla), ejecute lo siguiente.

$ grep "Name" test.txt

Hoy veremos cómo extraer Correo electrónico direcciones de archivos de texto usando el comando grep .

Como sabemos, una dirección de correo electrónico está presente en el formato:

<user_id>@<domain>.<subdomain>

Aquí, id_usuario es una cadena de identificación única elegida por el usuario, y el dominio y el subdominio representan el proveedor de servicios de correo electrónico (p. ej., gmail.com ).

Los nombres de dominio y subdominio solo pueden contener letras, mientras que user_id puede contener letras, caracteres numéricos y otros caracteres comunes como el punto (.) y guión bajo (_) .

Como este es un patrón definido que se va a buscar, podemos usar el '-e' bandera de grep, que nos permite especificar patrones de expresión regular en lugar de subcadenas, para la extracción de un archivo.

Por lo tanto, la sintaxis de grep con '-e' es:

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

Con base en el patrón de una dirección de correo electrónico discutido anteriormente, podemos formar la siguiente expresión regular:

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

Aquí, 'a-zA-Z' representa cualquier alfabeto, '0-9' representa números, '._' representan un punto o un guión bajo. Tenga en cuenta que los caracteres '\+' representan que el conjunto de caracteres entre corchetes debe aparecer una o más veces.

Ejecutaremos esta expresión regular para extraer direcciones de correo electrónico del archivo 'test2.txt ‘.

Primero, vea el contenido del archivo test2.txt son:

$ cat test2.txt

A continuación, ejecute el siguiente comando para extraer las direcciones de correo electrónico del archivo.

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

Como podemos ver, las direcciones de correo electrónico fueron identificadas con éxito por Grep. Sin embargo, se muestran junto con la línea completa en el archivo.

Para mostrar solo los ID de correo electrónico encontrados, use el '-o' bandera junto con '-e' como se muestra.

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

En este artículo, hemos visto cómo extraer direcciones de correo electrónico de un archivo de texto en Linux, utilizando la práctica herramienta de línea de comandos Grep . Estas direcciones de correo electrónico también se pueden escribir en un archivo mediante la redirección.

Si tiene alguna pregunta o comentario, háganoslo saber en los comentarios a continuación.


Linux
  1. Cómo agregar texto al final del archivo en Linux

  2. Cómo extraer archivos .gz y .tar.gz en Linux

  3. ¿Cómo eliminar "datos binarios" de un archivo de texto (por ejemplo, Bash_history)?

  4. Cómo distinguir binarios de archivos de texto en Linux

  5. ¿Cómo extraer un archivo .dmg en Linux?

Cómo crear directorios desde un archivo de texto en Linux

Cómo quitar la contraseña de un archivo PDF en Linux

Cómo mostrar datos de un archivo de texto en Linux

Cómo agregar texto al comienzo del archivo en Linux

Cómo quitar (^M) caracteres de un archivo en Linux

Cómo extraer el archivo Tar.xz en la línea de comandos de Linux