Назад | Перейти на главную страницу

Regex заменителя свойства rsyslog требует двойного экранирования для использования специальных символов?

Рассмотрим следующую строку журнала:

2019-04-20 21:17:57,505341,+0000 [Web,279,10.0.0.100] c4da4857-63b1-11a9-a00a-b0521699037b TCP RX ...

Я хочу удалить отметку времени 2019-04-20 21:17:57,505341,+0000 в начале перед записью этой строки журнала с помощью rsyslog.

Я использовал заменитель свойств в шаблоне, используя регулярное выражение, чтобы сопоставить все, что находится после отметки времени:

template (name="mylog" type="string" string="%timereported% %syslogtag% %pri-text% %msg:R,ERE,1,BLANK:(\\[.*)--end%\n")

Обратите внимание на двойной \\ перед скобкой [.

Если бы я использовал только один \ перед скобкой rsyslog выдает ошибку, но отлично работает с двойным \\

Я не очень разбираюсь в регулярных выражениях, но я понимаю, что специальный символ, такой как скобка [ требуется один \ для экранирования, чтобы он соответствовал буквенной скобке в строке журнала. Почему сингл \ не работает в rsyslog, но удваивается \\ делает?

Я использую rsyslog v8.40.0 в Debian.

Что мне не хватает?

Вы правы насчет синтаксиса регулярного выражения, но вы должны помнить, что предоставляете его как строковую константу, поэтому вы также должны соблюдать правила для них, в которых указано, что специальные символы (включая обратную косую черту) экранируются обратной косой чертой. На странице, на которую есть ссылка, есть ссылка на онлайн-инструмент чтобы сбежать за тебя.