ocehb: (Default)
[personal profile] ocehb
Имеется файл, каждая строка которого содержит два значения, разделённых табуляцией: время в формате unix_timestamp и IP-адрес (в формате aaa.bbb.ccc.ddd). Требуется для каждого встречающегося в файле IP-адреса выделить запись, которой соответствует первое и последнее посещение.

Примечание: файл не упорядочен ни по времени, ни по IP-адресам.



open F,"sort -n file |" or die $!;

my %hash;
while (<F>) {
    chomp;
    my ($time,$ip) = split "\\s+";
    $hash{$ip}->[exists $hash{$ip}->[0]] = $time;
}

while (my ($ip,$ref) = each %hash) {
    printf "%s: %d - %d\n",$ip,@{$ref};
}


PS. Ну и как делал файл:

zsh# ee=(10.20.66.1 10.20.66.10 10.20.66.40 192.168.1.10)
zsh# for i in {1..1024}; do print "$RANDOM  ${ee[$[$RANDOM%4+1]]}"; done > time.ip
zsh# perl -l script.pl time.ip
10.20.66.1: 85 - 32705
10.20.66.40: 172 - 32434
192.168.1.10: 45 - 32715
10.20.66.10: 96 - 32616
zsh#

Date: 2006-07-13 09:58 am (UTC)
From: [identity profile] jerom.livejournal.com
В общем, не возьмут меня...

Profile

ocehb: (Default)
ocehb

January 2021

S M T W T F S
     12
345 6789
10111213141516
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 6th, 2026 01:05 am
Powered by Dreamwidth Studios