Encontre linhas comuns em dois arquivos gzipados

3

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?

    
por Ayush 07.01.2016 / 21:40

2 respostas

6

É muito mais eficiente para gunzip(1) , depois sort(1) dos arquivos e usa comm(1) no resultado.

    
por 07.01.2016 / 21:47
3

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.

    
por 07.01.2016 / 22:36