2つの大きなgzipファイルがあります。共通行を見つける必要があります。 Zgrep(gzip)はこの操作を広く実行できますが、zgrep -f <unzipped file> <zipped file>
それを実行するスイッチは見つかりませんzgrep -f <zipped file> <zipped file>
。私は何を逃したことがありませんか?
答え1
gunzip(1)
これにより、sort(1)
ファイルを処理して結果を使用する方がcomm(1)
効率的です。
答え2
GNUはgrep(1)
望むことはできませんが、システムとシェルがそれをサポートしている場合は、プロセス置換を使用して同様の結果を得ることができます。
$ grep -f <(gunzip < zipped_patterns.txt.gz) zipped_data.txt.gz
gunzip < file.gz
プロセス置換で入力リダイレクト()を使用すると、解凍されたgunzip(1)
データをディスクに書き込むことなく、メモリ内のファイルを解凍します。スキーマファイルが使用可能なRAMと比較して十分に大きい場合、システムの競合が発生する可能性が高くなります。 〜のように電話ブランドファイルをソートして使用する方がcomm(1)
効率的であることを指摘しています。