У меня есть набор из 100 файлов журнала, сжатых с помощью gzip. Мне нужно найти все строки, соответствующие заданному выражению. Я бы использовал grep, но, конечно, это немного кошмар, потому что мне придется разархивировать все файлы, один за другим, grep и удалить распакованную версию, потому что они все не поместятся на моем сервере, если они все были распакованы.
У кого-нибудь есть небольшой трюк, как это сделать быстро?
Вы могли бы взглянуть на zgrep
.
>$ zgrep -h
grep through gzip files
usage: zgrep [grep_options] pattern [files]
В zgrep
программа существует для этой конкретной цели.
Или, если в вашей ОС нет zgrep
, что-то вроде этого.
gunzip -c somefile1.gz [...] | grep 'string'
Есть утилита под названием zcat
, который является версией cat
который работает с сжатыми файлами. В вашей ситуации вы можете сделать что-то вроде следующего:
zcat yourfile.gz | grep 'serverfault is awesome'
Пока zgrep
кажется, это следующая лучшая вещь после нарезанного хлеба, я подумал, что выложу альтернативу ...
Вы можете использовать конвейер, чтобы распаковать файлы журнала перед их сборкой, не занимая место на диске. Например:
cat /var/log/program.log.*.gz | gunzip | grep 'stuff and things'