|
突然想到 .bash_histroy不是存了一堆用过的命令么 统计一下看哪个出场较高
代码写得较粗糙 比如ls|grep什么的都没识别 只认出从开头到第一个空格的命令
而我的historysize设得比较大 所以比较有统计效能 hh
也附上俺的结果 ls cd pacman 坐居前三
- #!/usr/bin/perl
- #20100705 kar
- use strict;
- use warnings;
- my $his_file = shift || "~/.bash_history";
- my $n = 10;
- my @l = `cat $his_file`;
- my $all = `wc -l $his_file`;
- my $total;
- my %b;
- my $i;
- my $p;
- my @so;
- $all =~ /(\d*) /;
- $total = $1;
- foreach $i (@l){
- if($i!~/ /){
- $p=$i;
- } else {
- $i=~/(.*?) /;
- $p=$1;
- }
- chomp($p);
- if (!defined($b{$p})){
- $b{$p}=1;
- } else {
- $b{$p}++;
- }
- }
- @so = ();
-
- foreach $i(keys(%b)){
- unshift @so,$i."\t".$b{$i}."\t".$b{$i}/$total*100;
- }
- print "Total:$all\n";
- @so=sort {
- my $ta=$a;
- my $tb=$b;
- if ($ta=~/\t(\d*)\t/){
- $ta=$1;}
- if ($tb=~/\t(\d*)\t/){
- $tb=$1;}
- $ta <=> $tb;
- } @so;
- @so=reverse(@so);
- $i = 0;
- while($i<$n){
- print $i+1,".";
- $p = $so[$i];
- $p =~ /(^.*\.\d\d)\d*/;
- print $1."%\n";
- $i++;
- }
-
-
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|