我有一个包含多行记录的文件。我需要读取该日志文件以获取一组记录并将每个单独的记录写入单独的文件。文件与下面相同..
VMEMBER NAME CMPJFCB
V//NGJFCB JOB (P,KBTB,BB2994),'MVSNBY-CMP',CLASS=A, JOB40337
V// REGION=0M,MSGCLASS=W,NOTIFY=&SYSUID
v// CYX sss eee
VMEMBER NAME CMPJFCB
V//NGJFCB JOB (P,KBTB,BB2994),'MVSNBY-CMP',CLASS=A, JOB40337
V// REGION=0M,MSGCLASS=W,NOTIFY=&SYSUID
v
v//
VMEMBER NAME CMPJFCB
V//NGJFCB JOB (P,KBTB,BB2994),'MVSNBY-CMP',CLASS=A, JOB40337
V// REGION=0M,MSGCLASS=W,NOTIFY=&SYSUID
v
v//
v/*
and so on ...
所以从上面的起点我们知道“VMEMBER NAME”,但我们不知道终点。它可以以“V”或“V//”或任何东西结尾。我尝试使用范围匹配如下
$line =~ m{VMEMBER .. v\/\*}
但问题是最后一个模式(v*),因为我们不确定最后一行记录是什么。请帮忙。
第一组的输出应该是
VMEMBER NAME CMPJFCB
V//NGJFCB JOB (P,KBTB,BB2994),'MVSNBY-CMP',CLASS=A, JOB40337
V// REGION=0M,MSGCLASS=W,NOTIFY=&SYSUID
v// CYX sss eee
第二组将是
VMEMBER NAME CMPJFCB
V//NGJFCB JOB (P,KBTB,BB2994),'MVSNBY-CMP',CLASS=A, JOB40337
V// REGION=0M,MSGCLASS=W,NOTIFY=&SYSUID
v
v//
像这样。