É muito mais eficiente para gunzip(1)
, depois sort(1)
dos arquivos e usa comm(1)
no resultado.
Eu tenho dois grandes arquivos gzip. Eu preciso encontrar as linhas comuns. O zgrep (gzip) faz isso em grande parte como zgrep -f <unzipped file> <zipped file>
, mas não consigo encontrar nenhuma opção para fazer zgrep -f <zipped file> <zipped file>
. Estou faltando alguma coisa?
É muito mais eficiente para gunzip(1)
, depois sort(1)
dos arquivos e usa comm(1)
no resultado.
O GNU grep(1)
não pode fazer o que você quer, mas você pode obter resultados similares usando a substituição do processo, se o seu sistema e shell o suportarem:
$ grep -f <(gunzip < zipped_patterns.txt.gz) zipped_data.txt.gz
Usando o redirecionamento de entrada ( gunzip < file.gz
) dentro da substituição do processo, gunzip(1)
descompacta o arquivo na memória, sem gravar os dados descompactados no disco. Se o seu arquivo de padrões for suficientemente grande em comparação com a RAM disponível, isso pode fazer com que o sistema se agite. Como vonbrand aponta, classificar seus arquivos e usar comm(1)
será muito mais eficiente.