作者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://www.ptt.cc/bbs/Perl/M.1492580158.A.F9B.html
推 CindyLinz: 你另外準備一個變數記錄說是不是剛抓到了一個 START 或 04/19 16:05
→ CindyLinz: STOP, 然後在抓到 CONTACT 的時候檢查這個變數決定要不 04/19 16:05
→ CindyLinz: 要輸出.. 輸出以後就把這個變數內容清除 04/19 16:05
→ jkchang: 可用 if (/START/ ... /STOP/) 04/19 16:22
→ sostmr: 謝謝上面各位前輩的建議!! 04/21 15:06