我有 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 bar
foo
:这将在文件和中查找匹配的行bar
,但它需要对文件进行排序,因此,<(sort file1)
将在将每个文件发送到 之前对其进行排序comm
。| wc -l
:打印匹配的行后,将它们通过管道输入wc
,这将计算行数。
警告
这会查找完全匹配的行。诸如换行不一致之类的事情会阻止行匹配。