期待正则表达式搜索完整的行或文本

时间:2017-12-19 05:03:50

标签: regex expect

我的expect_output(缓冲区)如下所示。

status QM1
QM(QM1)                                  Status(Running)
CPU:                                     0.02%
Memory:                                  106MB
Queue manager file system:               391MB used, 47.3GB allocated 
[1%]
HA role:                                 Primary
HA status:                               Normal
HA control:                              Enabled
HA preferred location:                   Here
mqa(mqcli)#

尝试了多个正则表达式选项,但我一直得到0,因为没有匹配。

regexp /^.*\b(Running)\b.*$ $qmgrstat类似,获取" HA状态"的值。

正确的Regex语法是什么?

3 个答案:

答案 0 :(得分:1)

不确定我理解。您是否只想匹配{ "person": { "titleId": 4 } } 的值?如果是,那么这个正则表达式会这样做:

HA status

答案 1 :(得分:0)

您可以使用以下正则表达式获取整个输出:

status[^\v]*\vQM[^\v]*\vCPU:[^\v]*\vMemory:[^\v]*\vQueue manager file system:[^\v]*\vHA role:[^\v]*\vHA status:[^\v]*\vHA control:[^\v]*\vHA preferred location:[^\v]*\vmqa[^\v]*#\v

如果您想要使用状态为完整的文本行:[^\v]*Status\([^\v]*

要获取具有HA状态的行,您可以使用:HA status:[^\v]*

祝你好运!

答案 2 :(得分:0)

如果要在“QM”状态运行时捕获HA状态,可以执行

if {[string match {*Status(Running)*} $qmgrstat]} {
    regexp {HA status:\s+(\S+)} $qmgrstat -> status
}