LINUX.ORG.RU

Поиск и сохранение части текста в rsyslog

 , ,


0

1

Добрый день, всем!

Столкнулся с такой проблемой, есть syslog сообщение (msg непосредственно) следующего вида: «10.100.20.30 I0515 14:46:45.069611 blablabla»

Пытаюсь сделать 2 вещи:

  1. удалить в начале строки ip адрес с пробелом и уже измененную строку сохранить в файл;
  2. вырезать ip адрес в начале строки и сохранить в отдельном поле сообщения.

Решил сначала решить задачу из п.2 следующим образом: constant(value=«",\n\t"sysloghost-ip":\t"») property(name=«msg» regex.type=«ERE» regex.submatch=«0» regex.expression=«([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})–end» regex.nomatchmode=«FIELD» format=«json»)

пытался и таким образом (чтобы писанины было меньше) constant(value=«",\n\t"sysloghost-ip":\t"») property(name=«msg» regex.type=«ERE» regex.submatch=«0» regex.expression=«(^([0-9]{1,3}.?){4})–end» regex.nomatchmode=«FIELD» format=«json»)

Если в первом варианте сохранялась просто исходная строка, то во втором случае, вообще все перестало сохраняться.

Где я ошибся или возможно делать что-то не так? Сразу оговорюсь, регулярное выражение генерировал на сайте https://www.rsyslog.com/regex/ , там все хорошо обрезается.

Ответ на: комментарий от mky

Спасибо!

Был невнимателен в изучении документации, проблема была именно в «–end» в регулярном выражении. Значение ″regex.submatch=″ должно было ровняться 0, иначе выдавал бы только первый кусок найденного.

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