Я пытаюсь очистить запись журнала в стеке ELK с помощью Grok. Мне нужно разобраться со следующим текстом:
/mnt/drive/fish/Cap Camel/Indigo - [Fair Game].jpg (34523) [2,0,34523,0,0,2,2]
/mnt/drive/fish/Cap Camel/Indigo - [Fair Game].jpg
/mnt/drive/fish/Cap Camel (1358)/Indigo - [Fair Game].jpg
Мне нужен путь, но он содержит пробелы, заглавные буквы, специальные символы и т. Д.?
Благодарность
1 ответ
Поскольку ваш третий пример содержит "(", мы не можем использовать это, чтобы определить изменение в первой строке.
Единственное, что связывает эти строки вместе, - это ".jpg". Вы сказали, что это не всегда может быть jpg, но, надеюсь, все они имеют суффиксы.
С этим предположением - а также с тем, что сам путь не содержит точек, этот шаблон работает в отладчике:
(?<file>[^\.]*\.[^ ]*)
«Все, что не является точкой, за которой следует точка, за которой следует все, что не является пробелом».
_grokparsefailure
для исправления элементов, не соответствующих Grok.
Похожие вопросы
Новые вопросы
regex
Регулярные выражения предоставляют декларативный язык для сопоставления шаблонов в строках. Они обычно используются для проверки строк, разбора и преобразования. Укажите язык (PHP, Python и т. д.) или инструмент (grep, VS Code, Google Analytics и т. д.), который вы используете. Не размещайте вопросы, требующие объяснения того, что означает символ или чему будет соответствовать конкретное регулярное выражение.
^(?<file>(?:/[^/]+)+\.jpg)
^(?<file>.*?)\s*\(
, если путь к файлу идет до пробелов +(
сразу после него.