github.com/GuanceCloud/cliutils@v1.1.21/pipeline/ptinput/funcs/md/add_pattern.md (about) 1 ### `add_pattern()` {#fn-add-pattern} 2 3 函数原型:`fn add_pattern(name: str, pattern: str)` 4 5 函数说明:创建自定义 grok 模式。grok 模式有作用域限制,如在 if else 语句内将产生新的作用域,该 pattern 仅在此作用域内有效。该函数不可覆盖同一作用域或者上一作用域已经存在的 grok 模式 6 7 参数: 8 9 - `name`:模式命名 10 - `pattern`: 自定义模式内容 11 12 示例: 13 14 ```python 15 # 待处理数据:"11,abc,end1", "22,abc,end1", "33,abc,end3" 16 17 # pipline 脚本 18 add_pattern("aa", "\\d{2}") 19 grok(_, "%{aa:aa}") 20 if false { 21 22 } else { 23 add_pattern("bb", "[a-z]{3}") 24 if aa == "11" { 25 add_pattern("cc", "end1") 26 grok(_, "%{aa:aa},%{bb:bb},%{cc:cc}") 27 } elif aa == "22" { 28 # 此处使用 pattern cc 将导致编译失败:no pattern found for %{cc} 29 grok(_, "%{aa:aa},%{bb:bb},%{INT:cc}") 30 } elif aa == "33" { 31 add_pattern("bb", "[\\d]{5}") # 此处覆盖 bb 失败 32 add_pattern("cc", "end3") 33 grok(_, "%{aa:aa},%{bb:bb},%{cc:cc}") 34 } 35 } 36 37 # 处理结果 38 { 39 "aa": "11" 40 "bb": "abc" 41 "cc": "end1" 42 "message": "11,abc,end1" 43 } 44 { 45 "aa": "22" 46 "message": "22,abc,end1" 47 } 48 { 49 "aa": "33" 50 "bb": "abc" 51 "cc": "end3" 52 "message": "33,abc,end3" 53 } 54 ```