LINUX.ORG.RU

[perl][awk][grep]Чем быстрее парсить логи

 , ,


0

1

Необходимо парсить постоянно обновляющийся лог и выбирать из него данные по шаблону.
tail -F /var/log/log | perl -nle 'print $1." ".$2 if /(один).{3}(два)/'

Подскажите, пожалуйста, каким способом данные лучше всего, быстрее передавать на другую машину? Может, и получать их можно быстрее?


imho, замеры по ... может time

tn1
()

Нормальным скриптом на perl'е, python'е или любом другом полноценном скриптовом языке.

Deleted
()

>> Подскажите, пожалуйста, каким способом данные лучше всего, быстрее передавать на другую машину? Может, и получать их можно быстрее?

Рискну предположить, что rsyslog (или syslog-ng) будет лучшим вариантом.

GotF ★★★★★
()

Пока актуален такой вариант:
tail -F /var/log/log | perl -nle '@a=qx{a.out $1 $2}; print @a if /(один).{3}(два)/'

a.out - программка на C, которая загоняет данные в базу MySQL на удаленной машине.

Важна скорость, есть ли вырианты побыстрее?

tuxin
() автор топика
Ответ на: комментарий от tuxin

> a.out - программка на C, которая загоняет данные в базу MySQL на удаленной машине.
> Важна скорость, есть ли вырианты побыстрее?

DBI.

arsi ★★★★★
()
Ответ на: комментарий от tuxin

> a.out - программка на C

Классное название.

AnDoR ★★★★★
()

Запыли простое поделие на С и щастье придет.

Gunnerua
()

Ну, в перле используются НКА для регулярок, а в awk вроде как смешанный тип, в грепе - ДКА. соотвественно самый быстрый греп, потом авк, потом перл. Ну и возможности у них в обратном порядке идут.

Если сможешь использовать греп, то используй его, если нет, то авк.

Но как я понял из примера тебе надо преобразовывать данные? Вроде греп этого совсем не умеет (только поиск), а авк умеет, но там не так удобно как в перле.

OxiD ★★★★
()
Ответ на: комментарий от OxiD

Вообще проще напистаь все сразу на перл - использовать file::Tail + DBI например.

OxiD ★★★★
()

re2c - мощные RE, компилируемые в программу на С. мускулу вздохнуть будет некогда :-)

anymouse
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.