【问题标题】:How can I use xargs to recursively parse email addresses out of text/html files?如何使用 xargs 从 text/html 文件中递归解析电子邮件地址?
【发布时间】:2015-11-10 16:29:18
【问题描述】:

我尝试使用 xargs 和 grep 从 text/html 文件目录中递归解析电子邮件地址,但此命令始终包含路径(我只想要生成的 emails.csv 文件中的电子邮件地址)。

find . -type f | xargs grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" >>  ~/emails.csv

你能解释一下我的 grep 命令有什么问题吗?我不需要对它进行排序或唯一。我想匹配文件中所有出现的电子邮件地址。我需要使用 xargs,因为我正在解析 20 GB 文本文件中的电子邮件。

谢谢。

【问题讨论】:

  • 我可能会单引号正则表达式,以避免正则表达式的外壳插值。
  • 尝试添加-h 作为grep 的一个选项来隐藏文件名 - 当您搜索多个文件时它会自动添加它们。
  • -h 成功了!谢谢@MarkSetchell
  • 我已将其添加为大家可以轻松查看的答案。

标签: grep xargs


【解决方案1】:

当您告诉grep 搜索多个文件时,它会将相应的文件名添加到搜索结果中。试试下面看看效果...

首先,在单个文件中搜索:

grep local /etc/hosts
# localhost is used to configure the loopback interface
127.0.0.1   localhost

现在在两个文件中搜索:

grep local /etc/hosts /dev/null
/etc/hosts:# localhost is used to configure the loopback interface
/etc/hosts:127.0.0.1    localhost

要禁止找到匹配项的文件名,请将-h 开关添加到grep,如下所示

grep -h <something> <somewhere>

【讨论】:

    猜你喜欢
    • 2019-03-27
    • 2011-01-07
    • 1970-01-01
    • 2010-10-07
    • 2011-11-27
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    相关资源
    最近更新 更多