Фильтр Grok с вертикальными линиями в логах

Я пытаюсь использовать фильтры grok с журналом с вертикальными линиями «|».

Пример:

D:\Files\test.txt||Filtertest||2015/07/24 02:10:25 PM||Myname

Я пробую фильтр greedydata, но не знаю, как остановиться на "|" символ.

${GREEDYDATA:filename}||%{WORD:filter}

Любые идеи?


person RVZ    schedule 24.07.2015    source источник


Ответы (2)


Шаблоны на самом деле являются регулярными выражениями, а символ вертикальной черты означает «ИЛИ» в регулярном выражении. Чтобы удалить это значение, экранируйте его:

foo\|\|bar
person Alain Collins    schedule 24.07.2015
comment
Не уверен, что вы имеете в виду? Значит фильтр должен быть таким? %{GREEDYDATA:имя файла}\|\|%{WORD:фильтр} - person RVZ; 27.07.2015
comment
Да, вам нужно выйти (\) из трубы (|). - person Alain Collins; 27.07.2015

Я нашел другое решение для этого. Я использовал команду gsub, чтобы заменить все символы | символы с запятыми, которые я могу легко отфильтровать с помощью grok.

gsub => ["message", "[|]", ","]
person RVZ    schedule 27.07.2015