Perl統計若干檔案中返回碼的個數

來源:互聯網
上載者:User

有一大堆日誌,需要按裝置統計一下各個裝置中日誌記錄中返回碼的個數。

裝置名稱字可以根據檔案名稱字獲得, 日誌記錄是有一定格式的。第七個欄位是 返回碼。

分別shell和perl實現了,Perl不熟,網上拼了個代碼。

 

 

use Text::ParseWords;<br />use Data::Dumper;<br />my $result;<br />my %table;<br />$argv_len = @ARGV;<br />if($argv_len == 0)<br />{<br /> print "it need filename/n";<br /> exit(1);<br />}<br />$cmd="ls '".join("' '",@ARGV)."' |";</p><p>open(PIPE, $cmd);<br />@filenames = <PIPE>;<br />close(PIPE);</p><p>foreach(@filenames){<br /> analy($_);<br />}</p><p>sub trim<br />{<br /> my $string = shift;<br /> $string =~ s/^/s+//;<br /> $string =~ s//s+$//;<br /> return $string;<br />}</p><p>sub analy<br />{<br /> my $filename= trim(shift);<br /> $cmd="cat $filename |";<br /> open(PIPEFILE,$cmd);<br /> @lines=<PIPEFILE>;<br /> close(PIPEFILE);<br /> my ($sn,$dev_id,$time) = split(/_/g,$filename);<br /> my $dev=$dev_id.'-'.substr($sn,-3);</p><p> my %code;<br /> foreach(@lines)<br /> {<br /> my @line=quotewords(" ", 1, $_);<br /> $code{$line[7]}++;<br /> }<br /> $table{$dev} = [] unless exists $table{$dev};<br /> push @{$table{$dev}}, /%code;<br />}<br />foreach my $dev(sort keys %table) {<br /> print "$dev:/n ";<br /> my @code = @{$table{$dev}};<br /> foreach my $code(@code)<br /> {<br /> foreach my $key(keys(%{$code}))<br /> {<br /> $result{$key}+= $code->{$key};<br /> }<br /> }<br /> print "keys /t/t values/n";<br /> foreach my $value (keys(%result))<br /> {<br /> print $value." /t/t".$result{$value};<br /> print "./n";<br /> }<br />} 

 

使用shell就比較簡單了,只有幾行:

 

#!/bin/sh<br />while read line<br />do<br />echo $line<br /> grep HTTP /path/20110527/ -r | grep $line | awk '{a[$10]++} END {for(i in a) print i " "a[i]}'<br />done < dev_list 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.