Skip to content

регулярки обрезают поля, содержащие key=value вунтри. #3

@mkky

Description

@mkky

регулярное выражение r'Txt=(?P(.|\n|\r)*?)(,[a-zA-Z]+=|$|[0-5]{1}\d:[0-5]{1}\d.\d{6})'

из строки
07:46.750133-0,CONN,0,process=rphost,OSThread=14888,Txt='Ping direction settings changed on server: directionID=118f9168-07f3-4ee0-9734-c4df1a85d509,pingTimeout=60000,pingPeriod=12000'
вытащит
txt='Ping direction settings changed on server: directionID=118f9168-07f3-4ee0-9734-c4df1a85d509
вместо
txt='Ping direction settings changed on server: directionID=118f9168-07f3-4ee0-9734-c4df1a85d509,pingTimeout=60000,pingPeriod=12000'

Так же обрезаются многострочные поля.
Регулярками парсить такой формат лога неудобно.
Удобнее использовать vector функцию parse_key_value

Вот пример
https://playground.vrl.dev/?state=eyJwcm9ncmFtIjoiICAgICAgICAuY29udGV4dCA9IHJlcGxhY2UhKC5jb250ZXh0LCBcIicnXCIsIFwiXCIpXG4gICAgICAgIC5jb250ZXh0ID0gcmVwbGFjZSguY29udGV4dCwgXCJcXFwiXFxcIlwiLCBcIlwiKVxuICAgICAgICAubG9nID0gcGFyc2Vfa2V5X3ZhbHVlISguY29udGV4dCwgZmllbGRfZGVsaW1pdGVyOiBcIixcIiwga2V5X3ZhbHVlX2RlbGltaXRlcjogXCI9XCIsIGFjY2VwdF9zdGFuZGFsb25lX2tleTogZmFsc2UpICIsImV2ZW50Ijp7ImNvbnRleHQiOiJsZXZlbD1JTkZPLHByb2Nlc3M9cmFnZW50LE9TVGhyZWFkPTEyMzEyMyxDbGllbnRJRD0xMTExMSxUeHQ9J1xuXG5rZXk9Jyd2YWx1ZScnLHR4dF9tZXNzYWdlJyJ9LCJpc19qc29ubCI6ZmFsc2UsImVycm9yIjpudWxsfQ%3D%3D

Я у себя уже реализовал такой вариант https://github.com/mkky/1c_parse_tech_journal/
Плюс, я не стал выделять столбцы, и разбивать данные на несколько таблиц.
а сложил почти все поля из строки лога в map(https://clickhouse.com/docs/sql-reference/data-types/map)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions