我有一个像这样的文本文件目录:
listedname_ _email@domain.com__subject_date.eml
在"电子邮件"期间,文件名保证具有此模式。部分:
email@domain.xxx_
所以,电子邮件,at-sign,domain,period,tld,underscore。 (由于不是每个人都在他们的电子邮件客户端中设置他们的名字"他们并不总是有一个领先的下划线。)
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>
没有前导或尾随下划线,没有电子邮件正文,没有主题等。(以逗号分隔列表获取它也很棒,但不是必需的。)
有人可以帮我使用regex / grep命令吗?谢谢!
答案 0 :(得分:1)
我想我已经理解了你的问题。如我错了请纠正我。您可以通过两种方式“获取”电子邮件地址:
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