我有两个大 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)
会更加高效。