Парсинг логов Xorg.*.log

Обсуждение серверного программирования.

Модераторы: Duncon, Yurich

Ответить
FLEXO_187
Сообщения: 1
Зарегистрирован: 24 янв 2013, 22:02

25 сен 2013, 20:03

Короче,нелегкая вынудила писать мне парсер на perl.Вообщем задача такова,даны файлы логов Xorg.*.log в линуксе. Там в начале указаны идентификаторы (по типу -- ++ == и тд). Часть строк начинается с даты потом идет идентификатор и тд. Так вот,мне нужно поочередно считывать файлы,в каждом мне нужно выцеплять заголовок(до первой строки с датой) в отдельный файл (uncategorized.txt например),далее строку с датой нужно поместить в файл в соответствии с идентификатором(например строку с идентификатором -- поместить в файл --CATEGORY.TXT).Если после строки с датой идет строка без даты то она записывается в тот же файл что и предыдущая.И так нужно проделать с каждым логом.Так вот в perle я особо не разбираюсь,но примерный алгоритм вроде как понял,короче:
1)Через командную строку передать скрипту все файлы Xorg.*.log
2)Поочередно открывать каждый файл
3)С помощью регулярного выражения выцепить заголовок до первой строки,начинающейся с даты,в файл uncategorized.txt
4)Считывать строку,с помощью регулярки проверять есть ли дата в начале,затем проверить какой идентификатор в ней записан,и в соответствии с ним поместить в соответствующий файл(например строку с идентификатором -- в файл --CATEGORY.TXT.Если строка без даты,то поместить в тот же файл,что и предыдущую строку.


В принципе код весь не нужен,нужны самые основные моменты:передача скрипту всех логов,регулярка для выцепления заголовка,ну и регулярка для определения идентификатора,а уж остальноке сам намучу.Заранее спасибо за помощь
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

26 сен 2013, 11:47

В Перле не разбираюсь, но регулярку могу написать. Дайте пример текста и того, что нужно выцепить.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить