[請益] 新手提問,擷取多行的問題

看板Perl作者 (Nikki)時間7年前 (2017/04/19 13:35), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/2 (看更多)
大家好,我最近剛接觸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

04/19 16:05, , 1F
你另外準備一個變數記錄說是不是剛抓到了一個 START 或
04/19 16:05, 1F

04/19 16:05, , 2F
STOP, 然後在抓到 CONTACT 的時候檢查這個變數決定要不
04/19 16:05, 2F

04/19 16:05, , 3F
要輸出.. 輸出以後就把這個變數內容清除
04/19 16:05, 3F

04/19 16:22, , 4F
可用 if (/START/ ... /STOP/)
04/19 16:22, 4F

04/21 15:06, , 5F
謝謝上面各位前輩的建議!!
04/21 15:06, 5F
文章代碼(AID): #1OzlS--R (Perl)
文章代碼(AID): #1OzlS--R (Perl)