Страница 1 из 2
Ускорить grep
Добавлено: 11 сен 2006, 10:49
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
.
Добавлено: 11 сен 2006, 12:18
StS
Try regular expressions. Somethink like this:
Код: Выделить всё
grep --regexp='\(\(unknown1\|unknown2\) failure \) \| \(failure \(unknown3\|unknown4\)\)' $1
Добавлено: 11 сен 2006, 13:40
Проф. Преображенский
grep -vf <keywordfile>
Добавлено: 11 сен 2006, 15:09
nemiga
runner писал(а):grep -vf <keywordfile>
Спасибо, попробую.
.
Добавлено: 11 сен 2006, 18:46
nemiga
nemiga писал(а):runner писал(а):grep -vf <keywordfile>
Спасибо, попробую.
Попробовал -- еще раз спасибо. Почти на час быстрее.
.
Добавлено: 11 сен 2006, 20:32
Проф. Преображенский
nemiga писал(а):nemiga писал(а):runner писал(а):grep -vf <keywordfile>
Спасибо, попробую.
Попробовал -- еще раз спасибо. Почти на час быстрее.
.
А сколько работало раньше? Если нужно еще быстрее и использовать будете систематически, то можно написать простенькую прогрраммку на Сях.
Добавлено: 12 сен 2006, 20:59
bormo
runner писал(а):А сколько работало раньше? Если нужно еще быстрее и использовать будете систематически, то можно написать простенькую прогрраммку на Сях.
Еще зависит от того, какие диски - скорость чтения. Если мощный рейд и вся загвоздка в поиске, то стоит сделать сплит файлу - работает на удивление быстро и наваять простенький скриптик, чтобы парсить параллельно. Я это делал для поиска имен таблиц в дампах по 100-200 гигабайт. Правда использовал awk вместо grep
По поводу программки на Сях - если грамотно написать, то работать будет даже быстрее awk'а, а можно попробовать поискть готовые обработчики логов. Это же лог, нет?
Еще совет - сделай крон, который будет резать файл раз в какое-то время - проще будет работать.
Добавлено: 12 сен 2006, 23:54
anotherv
fgrep
Grep
Добавлено: 13 сен 2006, 06:49
nemiga
runner писал(а):А сколько работало раньше?
Часа 4-5, как повезет.
Кстати, не факт еще, что сейчас ускорилось -- может, случайно лог легкий попался.
.
Добавлено: 13 сен 2006, 06:51
nemiga
bormo писал(а):
Еще зависит от того, какие диски - скорость чтения. Если мощный рейд и вся загвоздка в поиске, то стоит сделать сплит файлу - работает на удивление быстро и наваять простенький скриптик, чтобы парсить параллельно. Я это делал для поиска имен таблиц в дампах по 100-200 гигабайт. Правда использовал awk вместо grep
...
Еще совет - сделай крон, который будет резать файл раз в какое-то время - проще будет работать.
Насчет порезать файл и распараллелить -- мысль интересная. Спасибо, подумаем.
.
Добавлено: 14 сен 2006, 01:11
bormo
anotherv писал(а):fgrep
оно!
* перевод с транслита
Добавлено: 14 сен 2006, 11:11
nemiga
anotherv писал(а):fgrep
Попробовал -- те же ..., только сбоку. Не быстрее.
.
Добавлено: 16 сен 2006, 06:17
sobomax
nemiga писал(а):anotherv писал(а):fgrep
Попробовал -- те же ..., только сбоку. Не быстрее.
.
Не парьтесь - затор скорее всего в скорости чтения с диска а вовсе не в скорости работы grep. Размер файл лога какой?
-Maxim
Grep vs. fgrep
Добавлено: 16 сен 2006, 09:46
nemiga
sobomax писал(а):nemiga писал(а):anotherv писал(а):fgrep
Попробовал -- те же ..., только сбоку. Не быстрее.
.
Не парьтесь - затор скорее всего в скорости чтения с диска а вовсе не в скорости работы grep. Размер файл лога какой?
-Maxim
~1 G
.
Re: Grep vs. fgrep
Добавлено: 16 сен 2006, 09:52
sobomax
nemiga писал(а):sobomax писал(а):nemiga писал(а):anotherv писал(а):fgrep
Попробовал -- те же ..., только сбоку. Не быстрее.
.
Не парьтесь - затор скорее всего в скорости чтения с диска а вовсе не в скорости работы grep. Размер файл лога какой?
~1 G
.
Хм тогда действительно странно. Лог то пустяковый по размеру. Скорость обработки получается порядка 70kB/sec. Может причина где-то в другом? Как вариант - большая дисковая активность паралельно на том-же винте (база данных, итд) из за чего большинство времени диск проводит seek'ая с дорожки на дорожку. Посмотрите статистику I/O для данного диска.
-Maxim