【发布时间】:2019-02-12 01:13:41
【问题描述】:
我是 bash 新手,在理解如何完成此操作时遇到问题。
检查所有“收件人:”字段电子邮件地址域并将所有唯一域列出到变量以将其与域进行比较。
我通过使用
获得“发件人地址”域grep -m 1 "From: " filename | cut -f 2 -d '@' | cut -d ">" -f 1
读取存储在文件filename中的邮件时。
对于“to address”域,可以有多个 To: 地址和多个域。我不确定如何从“到地址字段”获取唯一域。
地址行示例如下:
To: user@domain.com, user2@domain.com,
User Name <sample@domaintest.com>, test@domainname.com
grep -m 1 "^To: " filename | cut -f 2 -d '@' | cut -d ">" -f 1
但有不同格式的电子邮件。所以我不确定grep是否正确,或者我是否应该搜索awk或其他东西。
我需要从“收件人:”字段电子邮件地址/地址获取唯一域列表到 bash 脚本中的变量。
上述示例所需的输出:
domain.com,domaintest.com,domainname.com
【问题讨论】:
-
使用 GNU grep:
grep -m 1 "^To: " filename | grep -Po '@\K[^, >]+'? -
@Cyrus 有效,但显然“To:”字段分两行。示例中的“用户名”部分已转到实际电子邮件文件中的下一行,而我认为 grep 只检查一行?所以它只有前 2 个电子邮件 ID 的 2 个域。
-
请将该示例输入的所需输出添加到您的问题中。
-
我添加了一个输出请求,感谢@Cyrus的帮助