原帖:处理前:
professor.hut gilligan.crew.hut 1250
professor.hut lovey.howell.hut 910
thurston.howell.hut lovey.howell.hut 1250
professor.hut lovey.howell.hut 450
professor.hut laser3.copyroom.hut 2924
ginger.girl.hut professor.hut 1218
ginger.girl.hut maryann.girl.hut 199
处理后:
professor.hut has sent 5534 bytes
professor.hut => laser3.copyroom.hut: 2924 bytes
professor.hut => lovey.howell.hut: 1360 bytes
professor.hut => gilligan.crew.hut: 1250 bytes
ginger.girl.hut has sent 1417 bytes
ginger.girl.hut => professor.hut: 1218 bytes
ginger.girl.hut => maryann.girl.hut: 199 bytes
thurston.howell.hut has sent 1250 bytes
thurston.howell.hut => lovey.howell.hut: 1250 bytes
处理规则:
统计第一字段相同的值(第三字段)的总和并统计第一字段和第二字段相同的值的和,并按由大到小的顺序排列。
-
#!/usr/bin/perl
-
use 5.010;
-
my ( %total, %sum );
-
while (<DATA>) {
-
@_ = split;
-
$total{$_[0]} += $_[2];
-
$sum{$_[0]}{$_[1]} += $_[2];
-
}
-
for my $key ( sort { $total{$b} <=> $total{$a} } keys %total ) {
-
say "$key has sent $total{$key} bytes";
-
for ( sort { $sum{$key}{$b} <=> $sum{$key}{$a} } keys %{$sum{$key}} ) {
-
say " $key => $_: $sum{$key}{$_} bytes";
-
}
-
}
-
__DATA__
-
professor.hut gilligan.crew.hut 1250
-
professor.hut lovey.howell.hut 910
-
thurston.howell.hut lovey.howell.hut 1250
-
professor.hut lovey.howell.hut 450
-
professor.hut laser3.copyroom.hut 2924
-
ginger.girl.hut professor.hut 1218
-
ginger.girl.hut maryann.girl.hut 199
阅读(1248) | 评论(0) | 转发(0) |