Ускорить grep

Все, что вы хотели знать о программизме, но боялись спросить.
Аватара пользователя
nemiga
Маньяк
Сообщения: 2425
Зарегистрирован: 02 сен 2006, 19:05
Откуда: Minsk -> Seoul -> Ottawa

Ускорить grep

Сообщение nemiga »

Дано: Найти в файле ($1) все упоминания failure кроме некоторых, уже известных.

Предложено решение:

Код: Выделить всё

grep -ni failure $1 | grep -v failure on type | grep -v card failure  | grep -v failure on block | grep -v failure on synch | grep -v target failure | grep -v failure on dot | grep -v failure on zip | grep -v failure on throw | grep -v list failure | grep -v failure of section | grep -v no failure reported

# (набор ключевых слов изменен)
#
Все, разумеется, работает, но... очень медленно.

Есть ли возможность такого рода поиск как-то ускорить?

failure

TIA

.
StS
Завсегдатай
Сообщения: 301
Зарегистрирован: 04 май 2005, 11:33

Сообщение StS »

Try regular expressions. Somethink like this:

Код: Выделить всё

grep --regexp='\(\(unknown1\|unknown2\) failure \) \| \(failure \(unknown3\|unknown4\)\)' $1
Аватара пользователя
Проф. Преображенский
Графоман
Сообщения: 20276
Зарегистрирован: 08 ноя 2006, 11:10

Сообщение Проф. Преображенский »

grep -vf <keywordfile>
Аватара пользователя
nemiga
Маньяк
Сообщения: 2425
Зарегистрирован: 02 сен 2006, 19:05
Откуда: Minsk -> Seoul -> Ottawa

Сообщение nemiga »

runner писал(а):grep -vf <keywordfile>
Спасибо, попробую.

.
Аватара пользователя
nemiga
Маньяк
Сообщения: 2425
Зарегистрирован: 02 сен 2006, 19:05
Откуда: Minsk -> Seoul -> Ottawa

Сообщение nemiga »

nemiga писал(а):
runner писал(а):grep -vf <keywordfile>
Спасибо, попробую.
Попробовал -- еще раз спасибо. Почти на час быстрее.

.
Аватара пользователя
Проф. Преображенский
Графоман
Сообщения: 20276
Зарегистрирован: 08 ноя 2006, 11:10

Сообщение Проф. Преображенский »

nemiga писал(а):
nemiga писал(а):
runner писал(а):grep -vf <keywordfile>
Спасибо, попробую.
Попробовал -- еще раз спасибо. Почти на час быстрее.

.
А сколько работало раньше? Если нужно еще быстрее и использовать будете систематически, то можно написать простенькую прогрраммку на Сях.
bormo
Пользователь
Сообщения: 194
Зарегистрирован: 19 май 2006, 21:03
Откуда: + 1 604

Сообщение bormo »

runner писал(а):А сколько работало раньше? Если нужно еще быстрее и использовать будете систематически, то можно написать простенькую прогрраммку на Сях.
Еще зависит от того, какие диски - скорость чтения. Если мощный рейд и вся загвоздка в поиске, то стоит сделать сплит файлу - работает на удивление быстро и наваять простенький скриптик, чтобы парсить параллельно. Я это делал для поиска имен таблиц в дампах по 100-200 гигабайт. Правда использовал awk вместо grep

По поводу программки на Сях - если грамотно написать, то работать будет даже быстрее awk'а, а можно попробовать поискть готовые обработчики логов. Это же лог, нет?

Еще совет - сделай крон, который будет резать файл раз в какое-то время - проще будет работать.
Аватара пользователя
anotherv
Маньяк
Сообщения: 2112
Зарегистрирован: 07 янв 2006, 20:02

Сообщение anotherv »

fgrep
Аватара пользователя
nemiga
Маньяк
Сообщения: 2425
Зарегистрирован: 02 сен 2006, 19:05
Откуда: Minsk -> Seoul -> Ottawa

Grep

Сообщение nemiga »

runner писал(а):А сколько работало раньше?
Часа 4-5, как повезет.

Кстати, не факт еще, что сейчас ускорилось -- может, случайно лог легкий попался.

.
Аватара пользователя
nemiga
Маньяк
Сообщения: 2425
Зарегистрирован: 02 сен 2006, 19:05
Откуда: Minsk -> Seoul -> Ottawa

Сообщение nemiga »

bormo писал(а): Еще зависит от того, какие диски - скорость чтения. Если мощный рейд и вся загвоздка в поиске, то стоит сделать сплит файлу - работает на удивление быстро и наваять простенький скриптик, чтобы парсить параллельно. Я это делал для поиска имен таблиц в дампах по 100-200 гигабайт. Правда использовал awk вместо grep
...
Еще совет - сделай крон, который будет резать файл раз в какое-то время - проще будет работать.
Насчет порезать файл и распараллелить -- мысль интересная. Спасибо, подумаем.

.
bormo
Пользователь
Сообщения: 194
Зарегистрирован: 19 май 2006, 21:03
Откуда: + 1 604

Сообщение bormo »

anotherv писал(а):fgrep
оно!

* перевод с транслита
Аватара пользователя
nemiga
Маньяк
Сообщения: 2425
Зарегистрирован: 02 сен 2006, 19:05
Откуда: Minsk -> Seoul -> Ottawa

Сообщение nemiga »

anotherv писал(а):fgrep
Попробовал -- те же ..., только сбоку. Не быстрее.

.
Аватара пользователя
sobomax
Маньяк
Сообщения: 3699
Зарегистрирован: 29 июн 2006, 22:53
Откуда: Vancouver

Сообщение sobomax »

nemiga писал(а):
anotherv писал(а):fgrep
Попробовал -- те же ..., только сбоку. Не быстрее.

.
Не парьтесь - затор скорее всего в скорости чтения с диска а вовсе не в скорости работы grep. Размер файл лога какой?

-Maxim
Аватара пользователя
nemiga
Маньяк
Сообщения: 2425
Зарегистрирован: 02 сен 2006, 19:05
Откуда: Minsk -> Seoul -> Ottawa

Grep vs. fgrep

Сообщение nemiga »

sobomax писал(а):
nemiga писал(а):
anotherv писал(а):fgrep
Попробовал -- те же ..., только сбоку. Не быстрее.
.
Не парьтесь - затор скорее всего в скорости чтения с диска а вовсе не в скорости работы grep. Размер файл лога какой?
-Maxim
~1 G

.
Аватара пользователя
sobomax
Маньяк
Сообщения: 3699
Зарегистрирован: 29 июн 2006, 22:53
Откуда: Vancouver

Re: Grep vs. fgrep

Сообщение sobomax »

nemiga писал(а):
sobomax писал(а):
nemiga писал(а):
anotherv писал(а):fgrep
Попробовал -- те же ..., только сбоку. Не быстрее.
.
Не парьтесь - затор скорее всего в скорости чтения с диска а вовсе не в скорости работы grep. Размер файл лога какой?
~1 G

.
Хм тогда действительно странно. Лог то пустяковый по размеру. Скорость обработки получается порядка 70kB/sec. Может причина где-то в другом? Как вариант - большая дисковая активность паралельно на том-же винте (база данных, итд) из за чего большинство времени диск проводит seek'ая с дорожки на дорожку. Посмотрите статистику I/O для данного диска.

-Maxim
Последний раз редактировалось sobomax 16 сен 2006, 10:54, всего редактировалось 1 раз.
Ответить