GeSHi (Ruby):
#!/usr/bin/ruby
raise "no file" unless ARGV[0]
programs = {}
File.open(ARGV[0]).each do |line|
line.strip!
name, ip = line.split
if !programs.has_key?(name)
programs[name] = { :ips => [ip], :count => 1 }
else
programs[name][:ips] << ip
programs[name][:count] += 1
end
end
programs.each { |k,v|
print k, " "
v[:ips].each { |x| print x, " " }
puts v[:count]
}
Ако нямаш руби...
GeSHi (Perl):
#!/usr/bin/perl
use strict;
use warnings;
die "No file" unless $ARGV[0
];
open my $fh, '<', $ARGV[0
] or die "Cannot open $ARGV[0]";
my (%progs,$name,$ip,$line);
while(<$fh>) {
$line = $_;
($name,$ip) = split(" ",$line);
$progs{$name} = { 'ips' => [$ip], "count" => 1 }
}
else {
push @{$progs{$name}->{'ips'}}, $ip;
$progs{$name}->{'count'}++;
}
}
map { print $_, " " } @{$progs{$_}->{'ips'}};
print $progs{$_}->{'count'}, "\n";
}
GeSHi (Bash):
laker@dg:~$ ./test.rb test
200 10.10.12.34 34.56.87.54 33.5.78.75 3
300 43.5.6.78 12.32.45.67 2