2011-07-05 7 views
0

私はmpath名 "DS4800_VG_STAGE *"とmultipath -llの出力からのオンラインパスの数を抽出しようとしています。python multiline group regex

DS4800_VG_STAGE_2(3600a0b80004710ce00001ce24e08ce1c)DM-6 IBM 1815のFAStT
【サイズ= 241G] [機能= 1 queue_if_no_pathで] [hwhandler = 1 RDAC] [RW]
\ _ラウンドロビン0 [PRIO = \\ 1:0:1:5 [アクティブ] [準備中]
\ _ラウンドロビン0 [prio = 0] [有効]
\ _ 2:0:[アクティブ]
1:5 sdf 8:80 [アクティブ] [ゴースト]
DS4800_VG_STAGE_1(3600a0b80004706be00001ece4e08ca4f)dm-8 IBM、1815 FAStT
[サイズ= 24112G] [features = 1 queue_if_no_p ATH] [hwhandler = 1つのRDAC] [RW]
\ _ラウンドロビン0 [PRIO = 100] [
活性\ _ 1:0:1:5 SDC 8時32 [アクティブ]
] [レディ\ _ラウンドロビン0 [PRIO = 0] [有効]
\ _ 2:0:1:5 SDF 8:80私はパス名を抽出するために管理している

[アクティブ] [ゴースト]残りの複数行の出力を1つのグループに集約するのには苦労していますので、グループ2でいくつのパスがオンラインになっているかを処理できます。

^(\w+\s+).+?$$((?:[^\\\\]+\n+)+) 

MATCH1:
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+)+) 

は、私はあなたが[^ \\]表現に引っ掛かり、バックスラッシュで任意の行を防止している使用している、あなたの表現で考えます。しかし、すべての行(最初の2つの "ヘッダ行"に続く)はバックスラッシュで始まります。