我正在尝试从multipath -ll的输出中提取mpath名称“DS4800_VG_STAGE *”和在线路径的数量。
DS4800_VG_STAGE_2(3600a0b80004710ce00001ce24e08ce1c)dm-6 IBM,1815 FAStT
[size = 241G] [features = 1 queue_if_no_path] [hwhandler = 1 rdac] [rw]
\ _ round-robin 0 [prio = 100] [有效]
\ _ 1:0:1:5 sdc 8:32 [主动] [准备]
\ _ round-robin 0 [prio = 0] [启用]
\ _ _ 2:0:1:5 sdf 8:80 [主动] [鬼]
DS4800_VG_STAGE_1(3600a0b80004706be00001ece4e08ca4f)dm-8 IBM,1815 FAStT
[size = 24112G] [features = 1 queue_if_no_path] [hwhandler = 1 rdac] [rw]
\ _ round-robin 0 [prio = 100] [有效]
\ _ 1:0:1:5 sdc 8:32 [主动] [准备]
\ _ round-robin 0 [prio = 0] [启用]
\ _ _ 2:0:1:5 sdf 8:80 [主动] [幽灵]
我设法提取了路径名,但我正在努力将多线输出的其余部分收集到一个组中,这样我就可以处理group2中有多少路径在线。
^(\w+\s+).+?$$((?:[^\\\\]+\n+)+)
匹配1:
Group 1 = "DS4800_VG_STAGE_2"
Group 2 = "[size=241G][features=1 queue_if_no_path][hwhandler=1 rdac][rw]"
MATCH2:
Group 1 = "DS4800_VG_STAGE_1"
Group 2 = "[size=24112G][features=1 queue_if_no_path][hwhandler=1 rdac][rw]"
任何帮助都会非常感激。
提前致谢
答案 0 :(得分:0)
请尝试使用此代码:
^(\w+\s+).+?$$\n((?:.+?\n+)+)
我认为在你的表达式中你正在使用[^ \\],这会阻止任何带有反斜杠的行被捕获在表达式中。但是每一行(在前两个“标题行”之后)都以反斜杠开头。