Регулярному выражению заменителя свойств rsyslog требуется двойной escape-код для использования специальных символов?

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

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

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

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

template (name = "mylog" type = "string" string = "% timereported%% syslogtag%% pri-text%% msg: R, ERE, 1, ПУСТО: (\\ [. *) - конец% \ n ")

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

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

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

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

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

1
задан 21 April 2019 в 20:52
1 ответ

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

0
ответ дан 4 December 2019 в 03:05

Теги

Похожие вопросы