- 论坛徽章:
- 0
|
最近學習perl 有以下一個需求 將lastb命令列出來的數據統計一下ip和ip對應的訪問次數
得到一個類似以下的顯示結果
61.152.90.151 36459
60.217.235.5 28285
211.151.185.54 28243
我用time測試了 awk的執行效果 70M大小的數據處理四秒多一點
time lastb | awk '{a[$3]++}END{for(k in a){printf("%-20s%8d\n",k,a[k]) | "sort -nrk 2"}}' > server_hacker_list.txt
我試著用perl來測試
time lastb | perl -anle '$bb{$F[2]}++;END{foreach $index (sort { $bb{$b}<=>$bb{$a} } keys %bb) {printf("%-20s\t%8d\n", $index,$bb{$index})}}'>server_hack_list.perl.log
生成的這兩個文件大小不一樣,有一些差別,我head看了一下結果,基本前面的統計兩個命令結果一樣,可能所面有一些統計差異。最重要的是perl這個執行效率有點差,花了五秒多。
看看如何寫perl的命令可以提高一些效率?聽說perl本來是想用來替代awk的,有沒更優的實現方法? |
|