Cómo eliminar parte del dominio de cada línea de un archivo de texto que contiene direcciones de correo electrónico

Cómo eliminar parte del dominio de cada línea de un archivo de texto que contiene direcciones de correo electrónico

Tengo un archivo de texto con una dirección de correo electrónico por línea. ¿Cómo puedo eliminar la parte del dominio pero no la parte del TLD de cada línea? Aquí, definiríamos TLD como el último elemento de la cadena después del último carácter de punto.

En otras palabras, entrada de muestra:

[email protected]
[email protected]
[email protected]
[email protected]

Salida deseada:

foobar@org
john.smith@com
chunkylover69@dk
qwerty@uk

Respuesta1

$ sed 's/@.*[.]/@/' file
foobar@org
john.smith@com
chunkylover69@dk
qwerty@uk

La expresión regular @.*[.]captura todo, desde @hasta el último período .de la línea. Lo reemplazamos con @.

Respuesta2

Usandoperl

perl -pe 's/(@).*\.(.*)$/\1\2/' foo

o en línea

perl -i -pe 's/(@).*\.(.*)$/\1\2/' foo

Ejemplo

$ cat foo
[email protected]
[email protected]
[email protected]
[email protected]

$ perl -pe 's/(@).*\.(.*)$/\1\2/' foo
foobar@org
john.smith@com
chunkylover69@dk
qwerty@uk

Explicación de expresiones regulares

/(@).*\.(.*)$/

  • 1er grupo de captura ( @)

    @@coincide literalmente con el personaje

  • .*coincide con cualquier carácter (excepto nueva línea)

    Cuantificador: *Entre cero y un número ilimitado de veces, tantas veces como sea posible, retribuyendo según sea necesario [codicioso]

    \..coincide literalmente con el personaje

  • 2do grupo de captura ( .*)

    .*coincide con cualquier carácter (excepto nueva línea)

    Cuantificador: *Entre cero y un número ilimitado de veces, tantas veces como sea posible, retribuyendo según sea necesario [codicioso]

  • $afirmar la posición al final de la cadena

Visualización de expresiones regulares

Demostración de depuración

Respuesta3

Usando awkpuedes hacerlo de esta manera.

$awk '{ sub(/\@.*\./,"@"); print }' file


foobar@org
john.smith@com
chunkylover69@dk
qwerty@uk

Usando subSustituir (buscar y reemplazar), puede buscar un patrón y reemplazarlo.

información relacionada