Рассмотрим следующую строку журнала:
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.
Что мне не хватает?
Вы правы насчет синтаксиса регулярного выражения, но вы должны помнить, что предоставляете его как строковую константу, поэтому вы также должны соблюдать правила для них, в которых указано, что специальные символы (включая обратную косую черту) экранируются обратной косой чертой. На странице, на которую есть ссылка, есть ссылка на онлайн-инструмент чтобы сбежать за тебя.