Você pode dar uma olhada em zgrep
.
>$ zgrep -h
grep through gzip files
usage: zgrep [grep_options] pattern [files]
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?
O programa zgrep
existe para essa finalidade específica.
Ou, se o seu sistema operacional não vier com zgrep
, algo assim.
gunzip -c somefile1.gz [...] | grep 'string'
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'
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'