使用sed脚本只打印有效的电子邮件条目



电子邮件列表.txt

1. Saman.desilva@tamucc.edu
2. saman_desilva@tamucc.edu
3. saman&desilva@tamucc.edu
4. Saman.desilva@gmail.com
5. saman@desilva@yahoo.com
6. saman@mail@com
7. saman.desilva@yahoo com

我想打印有效的电子邮件地址,但解决这个问题时遇到了问题。到目前为止,我有这个脚本,但它没有打印出完全正确的输出。它仍然给我一个不正确的输出。

sed -nr '/w+@w+.w+$/p' emaillist.txt

输出:

saman.desilva@tamucc.edu 
saman_desilva@tamucc.edu
saman&desilva@tamucc.edu 
Saman.desilva@gmail.com
saman@desilva@yahoo.com

首先,匹配所有有效电子邮件地址的正则表达式非常复杂。我假设,根据测试数据,你的目标是一个更简单的电子邮件地址有效性概念。

正则表达式的一个问题是,您从行的开头就不匹配,这一行用^表示。这样就可以匹配无效的电子邮件,比如用户名中带有"与"符号的电子邮件,因为它只匹配"与"后面的所有内容。因此,如果我们添加^,我们就会得到以下输出:

$ sed -nr '/^w+@w+.w+$/p' emaillist.txt
saman_desilva@tamucc.edu

这也不对,现在的问题是w只代表任何字母、数字或下划线。句点是测试数据中用户名的另一个"有效"非字母数字字符,因此我们还需要调整您的模式来添加它,现在我们得到了正确的输出:

$ sed -nr '/^(w|.)+@w+.w+$/p' emaillist.txt
Saman.desilva@tamucc.edu
saman_desilva@tamucc.edu
Saman.desilva@gmail.com

相关内容

  • 没有找到相关文章

最新更新