Rundeck多行正则表达式日志过滤器使用问题求助
解决Rundeck多行日志过滤与全局变量传递问题
正则表达式调整
你的需求是捕获所有不以SYSTEM-INFO:、No或Matched开头的行,原正则仅处理单行且未适配Rundeck的多行模式,调整后的正则如下:
(?m)^(?!SYSTEM-INFO:|No|Matched).+
(?m):启用多行模式,让^和$匹配每行的开头与结尾(?!...):负向前瞻规则,精准排除指定前缀的行.+:匹配非空行(若需保留空行可替换为.*)
Rundeck过滤器配置要点
- 选用多行正则表达式过滤器:在作业步骤的「日志过滤器」中选择该类型,填入调整后的正则,设置变量名(如
captured_target_lines),并勾选「将匹配项存储为多值数组」,确保所有符合条件的行都被收集。 - 放弃键值过滤器:键值过滤器默认按单行键值对结构匹配,仅能捕获最后一行符合条件的内容,完全不适用于你的多行批量捕获需求。
全局变量传递与后续步骤使用
- 捕获的多值数组可通过
${data.captured_target_lines}在后续步骤中直接引用。 - 若需将数组转为单行文本(用于参数表单),可使用Rundeck内置函数拼接:
该操作会把所有捕获的行用换行符连接成完整字符串,直接作为参数表单的默认值或传递内容。${util.join(data.captured_target_lines, "\n")}
测试验证
先在本地正则调试工具中验证正则是否匹配所有目标行,再在Rundeck中测试过滤器输出,确认变量已正确捕获所需内容。
内容的提问来源于stack exchange,提问作者cviper40
相关产品推荐
相关产品推荐

