根据电子邮件文件 grep 电子邮件文件

根据电子邮件文件 grep 电子邮件文件

我有 1 个电子邮件文件(460 万行) 我还有另一个电子邮件文件(1 亿行)。

我想看看有多少 4.6m 行出现在有 100m 行的文件中。

我已经研究过,并尝试了以下操作:
“grep -f file1 file2 > output.txt” < 无济于事。
“grep -wFf file1 file2 > output.txt” < 无济于事。

我为此使用 Cygwin,并且上述两个命令都“运行”(没有错误消息),然后在 X 时间后完成,并且没有任何内容输出到“output.txt”

答案1

comm -12 <(sort file1) <(sort file2) | wc -l

解释

  • comm -12 foo barfoo:这将在文件和中查找匹配的行bar,但它需要对文件进行排序,因此,
  • <(sort file1)将在将每个文件发送到 之前对其进行排序comm
  • | wc -l:打印匹配的行后,将它们通过管道输入wc,这将计算行数。

警告

这会查找完全匹配的行。诸如换行不一致之类的事情会阻止行匹配。

相关内容