作者sostmr (Nikki)
看板Perl
标题[请益] 新手提问,撷取多行的问题
时间Wed Apr 19 13:35:55 2017
大家好,我最近刚接触Perl不到一个月,有个问题一直困扰着我,请各位前辈不吝指教
我们最近在分析log,log大致的格式如下
11:13:33.460 INFO <-- REGISTER <ID:12344>
11:13:33.460 INFO CONTACT: <ID:456788>
12:20:21.350 INFO <--START <ID:12344>
12:20:21.350 INFO CONTACT <ID:456788>
12:23:22.420 INFO <--STOP <ID:12344>
12:23:22.420 INFO CONTACT <ID:456788>
12:30:55.300 INFO <--ACK <ID:12344>
12:30:55.300 INFO CONTACT <ID:456788>
我目前程式能分析出来Start ID&Time 和 Stop ID&Time,
但是最近被要求要多抓出START&STOP下面的CONTACT ID
以我目前的功力都只能撷取出单行单行,请问各位前辈有没有什麽建议可以让我抓<--STA
RT时,也把下面几行的CONTACT资料一起带出来吗?
因为单纯抓CONTACT的话,可能会抓到REGISTER货ACK的多余资料,我只想要START&STOP的
...
我的程式目前设计如下:
Open(File,"< $file");
While ($line = <FILE>)
{
$line =~ s/\n/\r\n/g;
$line =~ s/^\s+//g;
@data = split(/\s+/,$line);
If($line =~ /<-- START <ID:/)
{ $line=substr($data[7], 4, 9)
Print "line\n";
}
希望各位前辈提点一下,谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 42.72.175.37
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Perl/M.1492580158.A.F9B.html
1F:推 CindyLinz: 你另外准备一个变数记录说是不是刚抓到了一个 START 或 04/19 16:05
2F:→ CindyLinz: STOP, 然後在抓到 CONTACT 的时候检查这个变数决定要不 04/19 16:05
3F:→ CindyLinz: 要输出.. 输出以後就把这个变数内容清除 04/19 16:05
4F:→ jkchang: 可用 if (/START/ ... /STOP/) 04/19 16:22
5F:→ sostmr: 谢谢上面各位前辈的建议!! 04/21 15:06