我有这样的文本文件的目录:
listedname_ _email@domain.com__subject_date.eml
在“email”部分,文件名保证有这个模式:
email@domain.xxx_
所以,电子邮件,在标志,域名,期限,tld,下划线。 (由于不是每个人都在他们的电子邮件客户端中设置他们的“名字”,他们并不总是有一个领先的下划线。)
在Windows上的目录中有〜1,000个文件,但是我已经安装了Cygwin工具,可以导航到目录。 文件内容中也有一行保证看起来像这样:
From: "Bob Lawblog" <boblawblog@domain.law>
我想要做的是使用grep或任何工具来返回一个电子邮件地址列表,而不是更多,在这种格式:
email@domain.com <line break> email2@domain.com <line break> email3@domain.com <line break>
没有前导或尾随下划线,没有电子邮件主体,没有主题等(用逗号分隔的列表也是可怕的,但不是必要的)。
有人可以帮我使用正则expression式/ grep命令吗? 谢谢!
我想我已经理解你的问题了。 如我错了请纠正我。 看来你有两个选择来“获取”电子邮件地址:
From:
行来获取所需的电子邮件地址。 我最喜欢第二个选项,因为查找正则表达式匹配来自: listedname_ _email@domain.com__subject_date.eml
的电子邮件地址将是棘手的,因为如果电子邮件地址包含多个下划线呢?
要从每个文件中获取电子邮件地址列表,请尝试以下操作:
awk '/^From:/ { print substr($NF,2,length($NF)-2) }' *.txt > outfile
如果您希望使用这些电子邮件地址的csv,请使用printf
:
awk '/^From:/ { printf "%s,", substr($NF,2,length($NF)-2) } END { printf "\n" }' *.txt > outfile