如何从包含电子邮件地址的文本文件中删除每行的域部分

use*_*173 5 email command-line regex text-processing

我有一个文本文件,每行一个电子邮件地址。如何删除每行的域部分而不是 TLD 部分?在这里,我们将 TLD 定义为字符串的最后一个点字符之后的最后一个元素。

换句话说,样本输入:

foobar@example.org
john.smith@hotmail.com
chunkylover69@mail.dk
qwerty@yahoo.co.uk
Run Code Online (Sandbox Code Playgroud)

期望的输出:

foobar@org
john.smith@com
chunkylover69@dk
qwerty@uk
Run Code Online (Sandbox Code Playgroud)

Joh*_*024 7

$ sed 's/@.*[.]/@/' file
foobar@org
john.smith@com
chunkylover69@dk
qwerty@uk
Run Code Online (Sandbox Code Playgroud)

正则表达式@.*[.]捕获从@到最后一段的所有内容.。我们将其替换为@.