日誌分析中檔案編碼問題以及讀檔案匹配問題總結

來源:互聯網
上載者:User

一、檔案編碼問題:

日誌格式可以為 UTF-8無BOM格式 或者
ANSI格式編碼。

因為UTF-8格式編碼會導致出現一些奇怪的問題,比如,第一行的log或待匹配的關鍵字 查詢不到。

原因是:UTF-8編碼的檔案中,BOM佔三個位元組。如果用記事本把一個文字檔另存新檔UTF-8編碼方式的話,用UE開啟這個檔案,切換到十六進位編輯狀態就可以看到開頭的FFFE了。

切記。尤其是手動寫了關鍵字列表需要去log中尋找時一定要注意編碼格式不要是UTF-8格式。

http://blog.sina.com.cn/s/blog_570f6d940100h3vk.html(UTF—8與UTF—8(無bom)格式相比有什麼不同)

二、讀檔案匹配過程編碼問題:

讀檔案後,在匹配的時候注意是應該用“Regex”還是用“eq”。

前幾天做一個詞條pv統計的工作,兩種方式得到的結果不一樣。找了很久的原因,各種編碼方式換來換去的試用啊,最後的原因為:

1、keywords.txt的編碼改為UTF-8無BOM格式,兩種方式的PV差距縮小了一些。

2、將使用re匹配的規則換用eq來比較,兩種方式的PV結果一樣了。

汗啊~~~

三、附屬對比代碼:

1、笨方法:

$_ = decode('utf8',$_);#if( $_ =~/(北京首都機場賓館|廣州維景大酒店|德勝酒店|三亞萬豪度假酒店|伯瓷酒店|竹灣酒店|葡京酒店|凱悅酒店|華威酒店|靈山大佛|黿頭渚|東部華僑城|張家界|周莊|象鼻山|千島湖\[杭州\])(\d+)/){###開始導致PV值大的原因if( $_ =~/(.*)(\d+)/){if($1 eq "北京首都機場賓館"|$1 eq "廣州維景大酒店"|$1 eq "德勝酒店"|$1 eq "三亞萬豪度假酒店"|$1 eq "伯瓷酒店"|$1 eq "竹灣酒店"|$1 eq "葡京酒店"|$1 eq "凱悅酒店"|$1 eq "華威酒店"|$1 eq "靈山大佛"|$1 eq "黿頭渚"|$1 eq "東部華僑城"|$1 eq "張家界"|$1 eq "周莊"|$1 eq "象鼻山"|$1 eq "千島湖[杭州]"){####後來正確的PV值my ($doc_title, $doc_pv) = ($1,$2);print $doc_title."\t".$doc_pv."\n";$docInfo{$doc_title}{'pv'}+=$doc_pv;$totalNum+=$doc_pv;}}

2、效率高的方法,切記,keywords.txt的編碼格式要為UTF-8無BOM格式.

while(<FH1>){chomp($_);if($_=~/(.*)\s(\d*)/ && defined($wordhash{$1})){print decode('utf8',$_),"\n";$wordhash{$1} += $2;$sumPV += $2;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.