如何用Perl擷取報文

2021-07-10 09:58:41 字數 808 閱讀 9888

在實際生產環境中,常常需要從後台日誌中擷取報文,報文的形式類似於

乙個後台日誌有多個報文,每個報文可由操作流水唯一確定。

以前用awk寫過乙個,程式如下:

beginline=`awk

'begin}

' $logname

`endline=`awk

'nr>

'$beginline'

}' $logname

`awk

'nr>=

'$beginline'

&&nr<=

'$endline'

' $logname

學了perl以後,發現perl很適合寫類似邏輯的指令碼,現改寫如下:

#

!/usr/bin/perl

usestrict;

my$flag=0;my

$line

;while(<>)

if(/<\/interboss>/)

$line=''

; }

}

思路是:

將每乙個報文作為乙個整體,放到$line中,然後驗證給定的操作流水是否在$line中,如果在,則輸出$line,如果不在,則將$line置為空,繼續迴圈,直到遇到下乙個報文的,$line才開始填充。

那麼如何確保和之間的行填充到$line中呢?在這裡,引入了乙個變數$flag進行判斷,預設為0,在遇到時,將其置為1,在遇到時,又將其置為0。判斷是否填充的條件有兩個:一、匹配,二、$flag等於1,兩者只要符合乙個即可,這樣就可確保和之間的行填充到$line中。

如何用chrome擷取整個網頁

1.1 開啟chrome的開發者工具option command i mac ctrl shift i windows 1.2 然後按住快捷鍵command shift p mac ctrl shift p windows 1.3 輸入capture full size screenshot回車 1...

PERL如何用於自動化測試

perl廣泛用於自動化。它可能不是世界上最好的程式語言,但它最適合某些型別的任務。我們來討論perl用於自動化測試的位置和原因。儲存測試 什麼是儲存?資料儲存在files中。假設,我們有乙個與儲存相關的測試用例,我們必須在乙個分割槽上寫入資料,讀取並驗證資料是否正確寫入。這可以手動完成,但手動測試儀...

如何用SQL動態擷取字串的長度

我們都知道,sql擷取字串的固定長度,可以有sub 函式,rigth 函式,或者left 函式.如果擷取的字串是動態的乙個字段,那麼顯然,以上3個函式是不適用的.那麼如何動態的擷取字串的長度呢?比如 乙個表裡面有這麼validdate欄位,它的資料是這樣的形式插進去的,1,年 2,年 6,月 12,...