開発環境
- OS X Lion - Apple(OS)
- BBEdit - Bare Bones Software, Inc.(Text Editor)
- Script言語:Perl
その他参考書籍
1.
コード(BBEdit)
sample.pl
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use 5.016;
binmode STDOUT, ':utf8';
binmode STDIN, ':utf8';
use Storable;
use Data::Dumper;
my %total_bytes;
my $file = "coconet_total.dat";
my $all = "all";
if (-e $file) {
my $dat = retrieve $file;
%total_bytes = %$dat;
}
while (<>){
next if /^#/;
my ($source, $destination, $bytes) = split;
$total_bytes{$source}{$destination} += $bytes;
$total_bytes{$source}{$all} += $bytes;
}
store \%total_bytes, $file;
for my $source (sort {
$total_bytes{$b}{$all} <=> $total_bytes{$a}{$all}
} keys %total_bytes){
printf "%-34s%10d bytes\n",
$source, $total_bytes{$source}{$all};
for my $destination ( sort {
$total_bytes{$source}{$b} <=> $total_bytes{$source}{$a}
} keys %{ $total_bytes{$source} }) {
next if $destination eq $all;
printf " => %-25s" .
" %10d bytes\n",
$destination, $total_bytes{$source}{$destination};
}
print "\n";
}
入出力結果(Terminal)
$ ./sample.pl coconet.dat
lovey.howell.hut 1139833 bytes
=> laser3.copyroom.hut 212456 bytes
=> professor.hut 175065 bytes
=> ginger.girl.hut 158084 bytes
=> maryann.girl.hut 155080 bytes
=> thurston.howell.hut 141790 bytes
=> skipper.crew.hut 119766 bytes
=> fileserver.copyroom.hut 98926 bytes
=> gilligan.crew.hut 78666 bytes
gilligan.crew.hut 983860 bytes
=> laser3.copyroom.hut 240327 bytes
=> maryann.girl.hut 145361 bytes
=> skipper.crew.hut 118827 bytes
=> lovey.howell.hut 107152 bytes
=> professor.hut 101219 bytes
=> thurston.howell.hut 97398 bytes
=> fileserver.copyroom.hut 90369 bytes
=> ginger.girl.hut 83207 bytes
ginger.girl.hut 968495 bytes
=> laser3.copyroom.hut 179803 bytes
=> lovey.howell.hut 170948 bytes
=> maryann.girl.hut 152634 bytes
=> professor.hut 110300 bytes
=> thurston.howell.hut 105940 bytes
=> skipper.crew.hut 103592 bytes
=> fileserver.copyroom.hut 79551 bytes
=> gilligan.crew.hut 65727 bytes
maryann.girl.hut 846806 bytes
=> laser3.copyroom.hut 161843 bytes
=> lovey.howell.hut 145271 bytes
=> ginger.girl.hut 126902 bytes
=> thurston.howell.hut 123456 bytes
=> professor.hut 109526 bytes
=> skipper.crew.hut 75155 bytes
=> fileserver.copyroom.hut 63807 bytes
=> gilligan.crew.hut 40846 bytes
professor.hut 821931 bytes
=> laser3.copyroom.hut 172882 bytes
=> lovey.howell.hut 123396 bytes
=> ginger.girl.hut 113685 bytes
=> maryann.girl.hut 94786 bytes
=> thurston.howell.hut 94363 bytes
=> skipper.crew.hut 86642 bytes
=> gilligan.crew.hut 82825 bytes
=> fileserver.copyroom.hut 53352 bytes
fileserver.copyroom.hut 770174 bytes
=> lovey.howell.hut 160986 bytes
=> professor.hut 146975 bytes
=> ginger.girl.hut 103478 bytes
=> maryann.girl.hut 99261 bytes
=> skipper.crew.hut 88261 bytes
=> thurston.howell.hut 86084 bytes
=> gilligan.crew.hut 85129 bytes
thurston.howell.hut 619077 bytes
=> laser3.copyroom.hut 129628 bytes
=> maryann.girl.hut 105137 bytes
=> lovey.howell.hut 82972 bytes
=> professor.hut 78576 bytes
=> skipper.crew.hut 66538 bytes
=> ginger.girl.hut 58580 bytes
=> gilligan.crew.hut 56658 bytes
=> fileserver.copyroom.hut 40988 bytes
skipper.crew.hut 481951 bytes
=> professor.hut 108779 bytes
=> laser3.copyroom.hut 89505 bytes
=> ginger.girl.hut 77621 bytes
=> maryann.girl.hut 71880 bytes
=> lovey.howell.hut 43427 bytes
=> thurston.howell.hut 41726 bytes
=> gilligan.crew.hut 29142 bytes
=> fileserver.copyroom.hut 19871 bytes
$ ./sample.pl coconet.dat
lovey.howell.hut 2279666 bytes
=> laser3.copyroom.hut 424912 bytes
=> professor.hut 350130 bytes
=> ginger.girl.hut 316168 bytes
=> maryann.girl.hut 310160 bytes
=> thurston.howell.hut 283580 bytes
=> skipper.crew.hut 239532 bytes
=> fileserver.copyroom.hut 197852 bytes
=> gilligan.crew.hut 157332 bytes
gilligan.crew.hut 1967720 bytes
=> laser3.copyroom.hut 480654 bytes
=> maryann.girl.hut 290722 bytes
=> skipper.crew.hut 237654 bytes
=> lovey.howell.hut 214304 bytes
=> professor.hut 202438 bytes
=> thurston.howell.hut 194796 bytes
=> fileserver.copyroom.hut 180738 bytes
=> ginger.girl.hut 166414 bytes
ginger.girl.hut 1936990 bytes
=> laser3.copyroom.hut 359606 bytes
=> lovey.howell.hut 341896 bytes
=> maryann.girl.hut 305268 bytes
=> professor.hut 220600 bytes
=> thurston.howell.hut 211880 bytes
=> skipper.crew.hut 207184 bytes
=> fileserver.copyroom.hut 159102 bytes
=> gilligan.crew.hut 131454 bytes
maryann.girl.hut 1693612 bytes
=> laser3.copyroom.hut 323686 bytes
=> lovey.howell.hut 290542 bytes
=> ginger.girl.hut 253804 bytes
=> thurston.howell.hut 246912 bytes
=> professor.hut 219052 bytes
=> skipper.crew.hut 150310 bytes
=> fileserver.copyroom.hut 127614 bytes
=> gilligan.crew.hut 81692 bytes
professor.hut 1643862 bytes
=> laser3.copyroom.hut 345764 bytes
=> lovey.howell.hut 246792 bytes
=> ginger.girl.hut 227370 bytes
=> maryann.girl.hut 189572 bytes
=> thurston.howell.hut 188726 bytes
=> skipper.crew.hut 173284 bytes
=> gilligan.crew.hut 165650 bytes
=> fileserver.copyroom.hut 106704 bytes
fileserver.copyroom.hut 1540348 bytes
=> lovey.howell.hut 321972 bytes
=> professor.hut 293950 bytes
=> ginger.girl.hut 206956 bytes
=> maryann.girl.hut 198522 bytes
=> skipper.crew.hut 176522 bytes
=> thurston.howell.hut 172168 bytes
=> gilligan.crew.hut 170258 bytes
thurston.howell.hut 1238154 bytes
=> laser3.copyroom.hut 259256 bytes
=> maryann.girl.hut 210274 bytes
=> lovey.howell.hut 165944 bytes
=> professor.hut 157152 bytes
=> skipper.crew.hut 133076 bytes
=> ginger.girl.hut 117160 bytes
=> gilligan.crew.hut 113316 bytes
=> fileserver.copyroom.hut 81976 bytes
skipper.crew.hut 963902 bytes
=> professor.hut 217558 bytes
=> laser3.copyroom.hut 179010 bytes
=> ginger.girl.hut 155242 bytes
=> maryann.girl.hut 143760 bytes
=> lovey.howell.hut 86854 bytes
=> thurston.howell.hut 83452 bytes
=> gilligan.crew.hut 58284 bytes
=> fileserver.copyroom.hut 39742 bytes
pythonの場合。
sample.py
コード(BBEdit)
#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-
import sys, re, pickle, os
file_name = 'coconet_total_2.dat'
total_bytes = {}
if os.path.isfile(file_name):
with open(file_name, 'rb') as f:
total_bytes = pickle.load(f)
for line in open(sys.argv[1]):
if re.search(r"^#", line): continue
source, destination, bytes = line.split()
bytes = int(bytes)
if source in total_bytes.keys():
if destination in total_bytes[source].keys():
total_bytes[source][destination] += bytes
else:
total_bytes[source][destination] = bytes
total_bytes[source]["all"] += bytes
else:
total_bytes[source] = {}
total_bytes[source][destination] = bytes
total_bytes[source]["all"] = bytes
with open(file_name, 'wb') as f:
pickle.dump(total_bytes, f)
for source in sorted(total_bytes.keys(), key=lambda x: -total_bytes[x]["all"]):
print("{0:34s}{1:10d} bytes".format(
source, total_bytes[source]["all"]
));
for destination in sorted( total_bytes[source].keys(),
key=lambda x: -total_bytes[source][x]):
if destination == "all": continue
print(" => {0:25} {1:10} bytes".format(
destination, total_bytes[source][destination]
));
print()
入出力結果(Terminal)
$ ./sample.py coconet.dat
lovey.howell.hut 1139833 bytes
=> laser3.copyroom.hut 212456 bytes
=> professor.hut 175065 bytes
=> ginger.girl.hut 158084 bytes
=> maryann.girl.hut 155080 bytes
=> thurston.howell.hut 141790 bytes
=> skipper.crew.hut 119766 bytes
=> fileserver.copyroom.hut 98926 bytes
=> gilligan.crew.hut 78666 bytes
gilligan.crew.hut 983860 bytes
=> laser3.copyroom.hut 240327 bytes
=> maryann.girl.hut 145361 bytes
=> skipper.crew.hut 118827 bytes
=> lovey.howell.hut 107152 bytes
=> professor.hut 101219 bytes
=> thurston.howell.hut 97398 bytes
=> fileserver.copyroom.hut 90369 bytes
=> ginger.girl.hut 83207 bytes
ginger.girl.hut 968495 bytes
=> laser3.copyroom.hut 179803 bytes
=> lovey.howell.hut 170948 bytes
=> maryann.girl.hut 152634 bytes
=> professor.hut 110300 bytes
=> thurston.howell.hut 105940 bytes
=> skipper.crew.hut 103592 bytes
=> fileserver.copyroom.hut 79551 bytes
=> gilligan.crew.hut 65727 bytes
maryann.girl.hut 846806 bytes
=> laser3.copyroom.hut 161843 bytes
=> lovey.howell.hut 145271 bytes
=> ginger.girl.hut 126902 bytes
=> thurston.howell.hut 123456 bytes
=> professor.hut 109526 bytes
=> skipper.crew.hut 75155 bytes
=> fileserver.copyroom.hut 63807 bytes
=> gilligan.crew.hut 40846 bytes
professor.hut 821931 bytes
=> laser3.copyroom.hut 172882 bytes
=> lovey.howell.hut 123396 bytes
=> ginger.girl.hut 113685 bytes
=> maryann.girl.hut 94786 bytes
=> thurston.howell.hut 94363 bytes
=> skipper.crew.hut 86642 bytes
=> gilligan.crew.hut 82825 bytes
=> fileserver.copyroom.hut 53352 bytes
fileserver.copyroom.hut 770174 bytes
=> lovey.howell.hut 160986 bytes
=> professor.hut 146975 bytes
=> ginger.girl.hut 103478 bytes
=> maryann.girl.hut 99261 bytes
=> skipper.crew.hut 88261 bytes
=> thurston.howell.hut 86084 bytes
=> gilligan.crew.hut 85129 bytes
thurston.howell.hut 619077 bytes
=> laser3.copyroom.hut 129628 bytes
=> maryann.girl.hut 105137 bytes
=> lovey.howell.hut 82972 bytes
=> professor.hut 78576 bytes
=> skipper.crew.hut 66538 bytes
=> ginger.girl.hut 58580 bytes
=> gilligan.crew.hut 56658 bytes
=> fileserver.copyroom.hut 40988 bytes
skipper.crew.hut 481951 bytes
=> professor.hut 108779 bytes
=> laser3.copyroom.hut 89505 bytes
=> ginger.girl.hut 77621 bytes
=> maryann.girl.hut 71880 bytes
=> lovey.howell.hut 43427 bytes
=> thurston.howell.hut 41726 bytes
=> gilligan.crew.hut 29142 bytes
=> fileserver.copyroom.hut 19871 bytes
$ ./sample.py coconet.dat
lovey.howell.hut 2279666 bytes
=> laser3.copyroom.hut 424912 bytes
=> professor.hut 350130 bytes
=> ginger.girl.hut 316168 bytes
=> maryann.girl.hut 310160 bytes
=> thurston.howell.hut 283580 bytes
=> skipper.crew.hut 239532 bytes
=> fileserver.copyroom.hut 197852 bytes
=> gilligan.crew.hut 157332 bytes
gilligan.crew.hut 1967720 bytes
=> laser3.copyroom.hut 480654 bytes
=> maryann.girl.hut 290722 bytes
=> skipper.crew.hut 237654 bytes
=> lovey.howell.hut 214304 bytes
=> professor.hut 202438 bytes
=> thurston.howell.hut 194796 bytes
=> fileserver.copyroom.hut 180738 bytes
=> ginger.girl.hut 166414 bytes
ginger.girl.hut 1936990 bytes
=> laser3.copyroom.hut 359606 bytes
=> lovey.howell.hut 341896 bytes
=> maryann.girl.hut 305268 bytes
=> professor.hut 220600 bytes
=> thurston.howell.hut 211880 bytes
=> skipper.crew.hut 207184 bytes
=> fileserver.copyroom.hut 159102 bytes
=> gilligan.crew.hut 131454 bytes
maryann.girl.hut 1693612 bytes
=> laser3.copyroom.hut 323686 bytes
=> lovey.howell.hut 290542 bytes
=> ginger.girl.hut 253804 bytes
=> thurston.howell.hut 246912 bytes
=> professor.hut 219052 bytes
=> skipper.crew.hut 150310 bytes
=> fileserver.copyroom.hut 127614 bytes
=> gilligan.crew.hut 81692 bytes
professor.hut 1643862 bytes
=> laser3.copyroom.hut 345764 bytes
=> lovey.howell.hut 246792 bytes
=> ginger.girl.hut 227370 bytes
=> maryann.girl.hut 189572 bytes
=> thurston.howell.hut 188726 bytes
=> skipper.crew.hut 173284 bytes
=> gilligan.crew.hut 165650 bytes
=> fileserver.copyroom.hut 106704 bytes
fileserver.copyroom.hut 1540348 bytes
=> lovey.howell.hut 321972 bytes
=> professor.hut 293950 bytes
=> ginger.girl.hut 206956 bytes
=> maryann.girl.hut 198522 bytes
=> skipper.crew.hut 176522 bytes
=> thurston.howell.hut 172168 bytes
=> gilligan.crew.hut 170258 bytes
thurston.howell.hut 1238154 bytes
=> laser3.copyroom.hut 259256 bytes
=> maryann.girl.hut 210274 bytes
=> lovey.howell.hut 165944 bytes
=> professor.hut 157152 bytes
=> skipper.crew.hut 133076 bytes
=> ginger.girl.hut 117160 bytes
=> gilligan.crew.hut 113316 bytes
=> fileserver.copyroom.hut 81976 bytes
skipper.crew.hut 963902 bytes
=> professor.hut 217558 bytes
=> laser3.copyroom.hut 179010 bytes
=> ginger.girl.hut 155242 bytes
=> maryann.girl.hut 143760 bytes
=> lovey.howell.hut 86854 bytes
=> thurston.howell.hut 83452 bytes
=> gilligan.crew.hut 58284 bytes
=> fileserver.copyroom.hut 39742 bytes
$ ls -l coconet*
-rw-r--r--@ 1 kamimura staff 88502 10 24 2011 coconet.dat
-rw-r--r-- 1 kamimura staff 2264 1 27 16:20 coconet_total.dat
-rw-r--r-- 1 kamimura staff 2133 1 27 17:01 coconet_total_2.dat
$
0 コメント:
コメントを投稿