Grep-ing arquivos gzipados [duplicados]

8

Eu tenho um conjunto de 100 arquivos de log, compactados usando o gzip. Eu preciso encontrar todas as linhas correspondentes a uma determinada expressão. Eu usaria o grep, mas é claro, isso é um pesadelo porque vou ter que descompactar todos os arquivos, um por um, aplicá-los e excluir a versão descompactada, porque eles não caberiam no meu número se eles foram todos descompactados.

Alguém tem um pequeno truque sobre como fazer isso rapidamente?

    
por Julien Genestoux 21.10.2013 / 15:49

5 respostas

25

Você pode dar uma olhada em zgrep .

>$ zgrep -h
grep through gzip files
usage: zgrep [grep_options] pattern [files]
    
por 21.10.2013 / 15:53
10

O programa zgrep existe para essa finalidade específica.

link

    
por 21.10.2013 / 15:54
4

Ou, se o seu sistema operacional não vier com zgrep , algo assim.

gunzip -c somefile1.gz [...] | grep 'string'
    
por 21.10.2013 / 16:10
3

Há um utilitário chamado zcat , que é uma versão do cat que funciona em arquivos compactados com gzip. Na sua situação, você poderia fazer algo como o seguinte:

zcat yourfile.gz | grep 'serverfault is awesome'
    
por 21.10.2013 / 16:35
1

Embora zgrep pareça ser a próxima melhor coisa desde o pão fatiado, eu pensei em postar uma alternativa ...

Você pode usar a tubulação para descompactar os arquivos de log antes de aplicá-los, sem ocupar espaço em disco. Por exemplo:

cat /var/log/program.log.*.gz | gunzip | grep 'stuff and things'
    
por 21.10.2013 / 16:14

Tags