所以,我有大约60k-70k的vCard文件,想要检查(或者,此时,计算),哪些vCards包含一个邮件地址(EMAIL; INTERNET:me@my-domain.com)
我试图将find的输出传递给awk,但我只是使用awk来处理文件列表,而不是每个文件内容。我怎么能这样做?我尝试了find,xargs和awk的几种组合,但是我没有让它正常工作。
感谢您的帮助, Wolle
答案 0 :(得分:2)
我可能会使用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
和xargs
:
find /start/dir -name "*.vcf" -print0 | xargs -0 -I {} grep -io "..." {}
答案 1 :(得分:0)
grep
递归可以做到这一点
grep -r 'EMAIL.+@'