我被多行regexp日志过滤器困住了。下面的文本是regexp目标
No such object (32)
Matched DN: o=yyyyyy,o=xxxxxx,c=cc
No such object (32)
Matched DN: o=yyyyyy,o=xxxxxx,c=cc
No such object (32)
Matched DN: o=yyyyyy,o=xxxxxx,c=cc
Lorem Ipsum lorem ipsum ydgsbahdjb:
- dsadjh dsajhdks uut75jf:
hfdsjfhdj
UTcnsbGHFGB885
nasdx443t
SYSTEM-INFO: END所使用的regexp是
(^(?!SYSTEM-INFO:|No|Matched.*).*)
在简历中,我需要一个多行regexp,它可以获得不以SYSTEM-INFO、No或Matched开头的行文本。
如果,我使用键/值筛选器进行尝试,则得到nasdx443t。多行和键/值过滤器似乎有不同的行为。
我需要这些数据捕获,因为我需要将其提升为全局变量,以传递到另一步(参数形式)。
有什么建议吗?
发布于 2022-07-18 17:47:43
最简单/最快的方法是在第一步使用grep进行筛选,然后使用多行regex数据捕获筛选器创建数据变量,然后在另一步中使用它。我使用了以下方法:your_command | grep -wv -e 'SYSTEM-INFO' -e 'No such' -e 'Matched DN'
职务定义示例:
- defaultTab: nodes
description: ''
executionEnabled: true
id: baa28f4a-9832-4404-81b7-bee1b7fe9c0d
loglevel: INFO
name: Example
nodeFilterEditable: false
plugins:
ExecutionLifecycle: null
scheduleEnabled: true
sequence:
commands:
- description: 'Print the output command and get the desired lines, then save
that on a data variable'
fileExtension: .sh
interpreterArgsQuoted: false
plugins:
LogFilter:
- config:
captureMultipleKeysValues: 'false'
hideOutput: 'false'
logData: 'true'
name: mydata
regex: ^(.*)$
type: key-value-data-multilines
script: |
your_command | grep -wv -e 'SYSTEM-INFO' -e 'No such' -e 'Matched DN'
scriptInterpreter: /bin/bash
- description: Just print/use the data variable generated in the previous step
exec: echo ${data.mydata}
keepgoing: false
strategy: node-first
uuid: baa28f4a-9832-4404-81b7-bee1b7fe9c0d第一步执行命令并将结果存储在数据变量上,第二步只打印数据变量内容。
检查一下结果。
https://stackoverflow.com/questions/73022187
复制相似问题