Perl
- 1 ответ
- 0 вопросов
0
Вклад в тег
#!/usr/bin/env perl6
#определим октет как \d{1,3}
my $o = /<digit> ** 1..3/;
#определим IP как 4 октета, разделенных точкой
my $ipdef = /$o '.' $o '.' $o '.' $o/;
#объявим хэщ
my %ip_list;
#заполним его IP-шниками
%ip_list{$_ ~~ $ipdef}++ if /$ipdef/ for 'log.txt'.IO.lines;
#выведем на экран, сортировав по убыванию частоты айпи в логе, флудеры сверху
.say for %ip_list.sort: { $^b.value cmp $^a.value };
#а вот так по возрастанию
# .say for %ip_list.sort: *.value;
143.56.71.195 => 5
54.214.23.199 => 1
54.224.44.192 => 1
185.49.11.195 => 1