我有一个类似以下日志
4294967295,"adult,low-risk",6564ec78-4995-45b7-b73d-44ee50851dcb,"everything,lost,bla",0
双引号内的值应该在同一个字段上,这样我会得到类似于
field1 => 4294967295
field2 => "adult,low-risk"
field3 => 36564ec78-4995-45b7-b73d-44ee50851dcb
field4 => "everything,lost,bla"
field5 => 0
但是,如果值为空或具有单个值,则双引号不会显示为:
4294967295,,6564ec78-4995-45b7-b73d-44ee50851dcb,everything,0
然后,如果我将我的剖析/grok放置为:
%{field1},%{field2},%{field3},%{field4},%{field5}
它将返回:
field1 => 4294967295
field2 => "adult
field3 => low-risk"
field4 => 36564ec78-4995-45b7-b73d-44ee50851dcb
field5 => "everything,lost,bla",0
如果我把我的剖析/grok像:
%{field1},"%{field2}",%{field3},"%{field4}",%{field5}
它可以工作,但一旦值为空或具有单个值(如上面提到的i),它将返回**_grokparsepailure或_dissectfailure**
我该怎么解决这个问题呢?任何帮助都将不胜感激,谢谢
1条答案
按热度按时间bz4sfanl1#
使用dissect而不是grok通常是一个好主意,因为它的功能有限,这意味着它更便宜。然而,dissect不知道csv文件中逗号的引用约定。csv过滤器知道,所以如果您使用
你会得到你想要的结果。