Преобразовать строку в десятичное значение Logstash Mutate - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть следующая строка:

012018121212XTED11      010FII TRXE CORCI           R$  000000000169000000000017450000000001690000000000172700000000017170000000001717000000000175000051000000000000002011000000000003474670000000000000009999123100000010000000000000BRXTEDCTF006143\r

Итак, я создаю фильтр для извлечения цены:

grok {
        match => ["message", "(?<tipo_registro>.{2})(?<data_pregao>.{8})(?<codbdi>.{2})(?<codneg>.{12})(?<tpmerc>.{3})(?<nomres>.{12})(?<especi>.{10})(?<prazot>.{3})(?<modref>.{4})(?<preabe>.{13})(?<premax>.{13})(?<premin>.{13})(?<premed>.{13})(?<preult>.{13})(?<preofc>.{13})(?<preofv>.{13})"]
    }

Цена - это поле preabe , номне нужно добавить точку перед двумя цифрами, чтобы преобразовать в число с плавающей точкой, так что это моя цена в строке:

00001650

Мне нужно добавить ".", так что у меня будет

000016.50

Теперь конвертировать в float и у меня будет

16.50

Любые советы?

1 Ответ

0 голосов
/ 14 декабря 2018

Звучит как работа для рубина.Вот некоторый непроверенный код:

filter {
   ruby {
      code => "event.set('preabe', event.get('preabe').to_i / 100)"
   }
}
...