У меня есть конвейер Logsta sh для приема всего файла, используется многострочный код. Я хотел бы получить все соответствующие события и извлечь только последнее слово или текст. Я не могу заставить работать любое регулярное выражение.
Содержимое файла
some line extract this 875846 85746,857
some other line
some other line with more text
let's extract this 887362 24153,44737
some other final line
Требуемое совпадение
Поиск всех строк содержит «извлечь это» и получить последнее слово / текст
Ожидаемый вывод
{
"patternmatch1" => [
[0] [
[0] "85746,857"
],
[1] [
[0] "24153,44737"
]
],
"@timestamp" => 2020-01-14T11:15:34.304Z
}
Logsta sh конвейер
input {
file{
path => "C:/file.txt"
start_position => "beginning"
sincedb_path => NUL
codec => multiline {
pattern => "^nomatching"
negate => true
what => previous
auto_flush_interval => 1
multiline_tag => ""
}
}
}
filter {
ruby { code => 'event.set("patternmatch1",event.get("message").scan(/extract this([^\r]*)/))' }
}
output {
stdout { codec => rubydebug }
}
Токовый выход
{
"patternmatch1" => [],
"message" => "some line extract this 875846 85746,857\r\nsome other line\r\nsome other line with more text\r\nlet's extract this 887362 24153,44737\r\nsome other final line\r\n\r",
"@timestamp" => 2020-01-14T11:44:50.140Z
}