Назад | Перейти на главную страницу

Греппинг сжатых файлов

У меня есть набор из 100 файлов журнала, сжатых с помощью gzip. Мне нужно найти все строки, соответствующие заданному выражению. Я бы использовал grep, но, конечно, это немного кошмар, потому что мне придется разархивировать все файлы, один за другим, grep и удалить распакованную версию, потому что они все не поместятся на моем сервере, если они все были распакованы.

У кого-нибудь есть небольшой трюк, как это сделать быстро?

Вы могли бы взглянуть на zgrep.

>$ zgrep -h
grep through gzip files
usage: zgrep [grep_options] pattern [files]

В zgrep программа существует для этой конкретной цели.

http://linux.about.com/library/cmd/blcmdl1_zgrep.htm

Или, если в вашей ОС нет 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'