我有一个像上面提到的时间戳2015-11-01 21:45:25,296
。是否可以使用任何正则表达式或grok模式提取星期几(星期一,星期二等)。
提前致谢
答案 0 :(得分:1)
这是我的过滤器:
filter {
ruby {
code => "
p = Time.parse(event['message']);
event['day-of-week'] = p.strftime('%A');
"
}
}
'message'变量是包含时间戳
的字段使用stdin和stdout以及你的字符串,你得到:
artur@pandaadb:~/dev/logstash$ ./logstash-2.3.2/bin/logstash -f conf2/
Settings: Default pipeline workers: 8
Pipeline main started
2015-11-01 21:45:25,296
{
"message" => "2015-11-01 21:45:25,296",
"@version" => "1",
"@timestamp" => "2016-08-03T13:07:31.377Z",
"host" => "pandaadb",
"day-of-week" => "Sunday"
}
希望这就是你所需要的,
阿图尔
答案 1 :(得分:0)
你想要的是:
假设您的字符串为2015-11-01 21:45:25,296
mydate='2015-11-01'
date +%a -d ${mydate% *}
会给你你想要的东西。
答案 2 :(得分:0)
简短的回答不是,你不能。 根据{{3}}的正则表达式:
...是一系列字符,用于定义搜索模式,主要用于与字符串进行模式匹配,或字符串匹配,即“查找和替换”类操作。
因此,正则表达式允许您解析String,它会搜索String中的信息,但不会对其进行计算。 如果你想进行这样的计算,你需要编程语言(java,c#或Ruby [如@pandaadb建议]等)的帮助或其他一些进行这些计算的工具(Wikipedia)。