将字符串转换为十进制值Logstash突变

时间:2018-12-14 00:11:05

标签: logstash elastic-stack

我有以下一行:

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

现在转换为浮点数,我将拥有

16.50

任何提示吗?

1 个答案:

答案 0 :(得分:1)

听起来像红宝石工作。这是一些未经测试的代码:

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