因此,我有大约60k-70k的vCard文件,并且希望检查(或者在这一点上,计数)哪个vCards包含邮件地址(EMAIL; INTERNET: [email protected])awk:遍历大量文件列表
我试图将find的输出传递给awk,但我只是让awk与文件列表一起工作,而不是与每个文件内容一起使用。我怎样才能让awk这样做呢?我尝试了几种find,xargs和awk的组合,但我没有得到它的正常工作。
感谢您的帮助, Wolle
因此,我有大约60k-70k的vCard文件,并且希望检查(或者在这一点上,计数)哪个vCards包含邮件地址(EMAIL; INTERNET: [email protected])awk:遍历大量文件列表
我试图将find的输出传递给awk,但我只是让awk与文件列表一起工作,而不是与每个文件内容一起使用。我怎样才能让awk这样做呢?我尝试了几种find,xargs和awk的组合,但我没有得到它的正常工作。
感谢您的帮助, Wolle
我可能会使用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:[email protected]\.com" *
如果grep
不能同时处理很多文件,删除-r
期权以及find
和xargs
尝试:
find /start/dir -name "*.vcf" -print0 | xargs -0 -I {} grep -io "..." {}
grep
递归可以做到这一点
grep -r 'EMA[email protected]'
要首先让我们看看你做了什么?张贴你试过的东西。 – devnull
找到./ -iname“* .vcf”| xargs -i awk'/[email protected]/'{}或 awk'/[email protected]/'$(find ./ -iname“* .vcf”... 和一些超复杂的组合我不能请记住: – WolleTD