所以,我有大约 60k-70k 的 vCard 文件并想检查(或者,此时,计数),哪些 vCard 包含邮件地址(EMAIL;INTERNET:me@my-domain.com)
我试图将 find 的输出传递给 awk,但我只是让 awk 处理文件列表,而不是处理每个文件的内容。我怎样才能让 awk 这样做?我尝试了 find、xargs 和 awk 的几种组合,但我没有让它正常工作。
谢谢你的帮助,沃尔
我可能会用grep
这个。
如果要从文件中提取地址:
grep -rio "EMAIL;INTERNET:.*@[a-z0-9-]*\.[a-z]*" *
使用cut
,sed
或awk
删除前导EMAIL;INTERNET:
:
... | cut -d: -f2
... | sed "s/.*://"
... | awk -F: '{print $2}'
如果您想要包含特定地址的文件的名称:
grep -ril "EMAIL;INTERNET:me@my-domain\.com" *
如果grep
无法一次处理那么多文件,请删除该-r
选项并尝试使用find
and xargs
:
find /start/dir -name "*.vcf" -print0 | xargs -0 -I {} grep -io "..." {}
grep
递归可以做到这一点
grep -r 'EMAIL.+@'