查找两个 gzip 压缩文件中的公共行

查找两个 gzip 压缩文件中的公共行

我有两个大 gzip 文件。我需要找到共同的行。 Zgrep(gzip)在很大程度上可以做到这一点,zgrep -f <unzipped file> <zipped file>但我找不到任何开关可以做到zgrep -f <zipped file> <zipped file>。我错过了什么吗?

答案1

gunzip(1)然后对sort(1)文件进行处理并使用comm(1)结果会更有效。

答案2

GNUgrep(1)不能做你想做的事,但如果你的系统和 shell 支持的话,你可以使用进程替换得到类似的结果:

$ grep -f <(gunzip < zipped_patterns.txt.gz) zipped_data.txt.gz

通过gunzip < file.gz在进程替换中使用输入重定向 ( ),gunzip(1)在内存中解压缩文件,而不将解压缩的数据写入磁盘。如果您的模式文件与可用 RAM 相比足够大,这很可能会导致系统崩溃。作为冯布兰德指出,对文件进行排序和使用comm(1)会更加高效。

相关内容