首页 > 解决方案 > 将字符串转换为十进制值 Logstash 变异

问题描述

我有以下行:

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

有小费吗 ?

标签: logstashelastic-stack

解决方案


听起来像是 ruby​​ 的工作。这是一些未经测试的代码:

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

推荐阅读