\n символы заменить на пробел или табуляцию

В logstash входят строки из файла, и при конкатенации (multiline) они склеиваются в 4 , но при этом разделение между ними - это нечто вроде СЛОВО_ИЗ_ПЕРВОЙ_СТРОКИ\nСЛОВО_ИЗ_ВТОРОЙ_СТРОКИ. Как их разделить я не понимаю. Все что пробовал было либо мной криво написано, либо для ситуации не подходило.
Спасибо за помощь.

Это можно сделать несколькими способами. Но зачем?

Я распишу задачу, может подскажешь как тогда сделать. Есть набор логов. Они представлены в виде
СЛОВО ПОСЛЕДОВАТЕЛЬНОСТЬ
СЛОВО ДАТА ВРЕМЯ
СЛОВО ДАТА ВРЕМЯ
СЛОВО IP ДАТА ВРЕМЯ
И этот круг повторяется каждые 4 строки. Задача такая: собрать каждую группу 4-х строк в одно событие, затем раскидать по соответствующим им полям. Мой вариант был такой: собрать их multiline'ом, затем через grok это все раскидать. Но multiline их соединяя добавляет \n, а при таком сплошном соединении grok их не делит на поля. Если я в чем-то не прав, пожалуйста, скажите в чем моя ошибка.

А вы grok-у про многострочность сказали, добавив (?m) в начало выражения?

Если все-равно не работает, то можно заменить эти \n на ЧТО_НИБУДЬ_ДРУГОЕ так:

mutate
{
    gsub => ["message", "\n", "ЧТО_НИБУДЬ_ДРУГОЕ"]
}

gsub не сработал, а когда я в grok добавляю перед паттернами (?m), то выдает ошибку, препдополжительно потому, что нельзя комбинировать (?m) и готовые паттерны %{}. Может, проблема в том, что у меня не одна \n в строчке, а целых 3?

Странно, может ему тоже (?m) нужен. Что-нибудь вроде

mutate
{
    gsub => ["message", "(?m)\n", "ЧТО_НИБУДЬ_ДРУГОЕ"]
}

На stackoverflow.com подсказали - в gsub надо использовать "[\r\n]" чтобы заработало

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.