Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
mlevel
- мл. сержант
- Сообщения: 105
- Зарегистрирован: 2009-09-28 15:31:39
Непрочитанное сообщение
mlevel » 2010-06-14 15:54:15
Есть файл, содержимое:
Код: Выделить всё
| ip_sender | ip_recipient | traffic |
10.100.34.5 92.128.34.2 234
92.128.34.2 10.100.34.5 423
10.100.33.4 92.128.42.6 234
92.128.34.2 10.100.33.4 423
Нужно просуммировать отдельно входящий и исходящий трафик по каждому IP - адресу.
Как можно это реализовать с помощью sed или awk?
mlevel
-
Хостинг HostFood.ru
-
Хостинг HostFood.ru
Тарифы на хостинг в России, от 12 рублей:
https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.:
https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах:
https://www.host-food.ru/domains/
-
ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
-
Контактная информация:
Непрочитанное сообщение
ProFTP » 2010-06-15 7:45:34
Код: Выделить всё
#!/usr/bin/perl
use Data::Dumper;
use strict;
use warnings;
open( TRAF, "perl_traf.txt" );
my $in;
my $out;
while (my $line = <TRAF>) {
my ($l1,$l2,$l3) = split (" ", $line, 3);
next if ( !$l1 or !$l2 || ($l1 or $l2) !~ /(\d+\.\d+\.\d+\.\d+)/);
$in->{$l1} = !$in->{$l1} ? $in->{$l1} = $l3 : $in->{$l1} += $l3;
$out->{$l2} = !$out->{$l2} ? $out->{$l2} = $l3 : $out->{$l2} += $l3;
}
print " ip_sender:\n";
print Dumper $in;
print "\n\n\n\n";
print " ip_recipient:\n";
print Dumper $out;
Код: Выделить всё
$ ./perl_traf2.pl
ip_sender:
$VAR1 = {
'10.100.33.4' => 468,
'92.128.34.2' => 1269,
'10.100.34.5' => 468
};
ip_recipient:
$VAR1 = {
'10.100.33.4' => 846,
'92.128.34.2' => 468,
'10.100.34.5' => 846,
'92.128.42.6' => 468
};
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ProFTP