Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Поиск и подсчет одинаковых значений, как?


Автор: borsch 21.5.2013, 12:56
Доброго дня всем, прошу помощи в решении задачи,
на входе у нас есть log.csv в котором содержаться записи вида:

                                                                              "Дата и время,Компьютер,Домен,Имя входа в систему,Платформа"     
                                                                               16.05.2013 8:47:31,PTP-SEKR-1,ptp\Users\,petrova,WinXP 5.1.2600
                                                                                16.05.2013 10:28:30,UKS-TO-5,uks\Users\,UKS-TO-5,WinXP 5.1.2600
                                                                                .......

На выходе необходимо получить подсчет  сколько  в сутки у нас таких записей  для конкретного домена   с выводом в файл       

                                                                                            " Дата, Кол-во в домене А, Домене Б, домене В, Всего"
                                                                                             16.05.2013,  123,                 120,               30,        253
                                                                                              17.05.2013,  146                  67,                 34,        247
                                                                                                .......


Если не кодом, то хотя бы ссылкой на нужную статью направьте.
Спасибо.

Автор: arto 21.5.2013, 13:16
как-то так:
perl -lne'@a=split",";$h{(split"\\s+",$a[0])[0]}->{$a[3]}++;$d{$a[3]}=1;END{foreach my$d(keys%h){print$d,": ",join",",map{$h{$d}->{$_}||0}keys%d}}'

Автор: Pfailed 21.5.2013, 13:17
Text::CSV для парсинга.
Для хранения хэш с ключем - датой, значением - хэш, в котором ключем - домен, значением - кол-во повторений.
После заполнения хэша вывод тем же Text::CSV

Автор: borsch 21.5.2013, 14:21
Цитата(arto @ 21.5.2013,  13:16)
как-то так:
perl -lne'@a=split",";$h{(split"\\s+",$a[0])[0]}->{$a[3]}++;$d{$a[3]}=1;END{foreach my$d(keys%h){print$d,": ",join",",map{$h{$d}->{$_}||0}keys%d}}'

Вы не могли бы более подробно разъяснить работу скрипта?

Добавлено через 1 минуту и 10 секунд
Цитата(Pfailed @ 21.5.2013,  13:17)
Text::CSV для парсинга.
Для хранения хэш с ключем - датой, значением - хэш, в котором ключем - домен, значением - кол-во повторений.
После заполнения хэша вывод тем же Text::CSV

Если не трудно пример наваять можно?

Автор: arto 21.5.2013, 15:26
построчное чтения в хеш день->домен->количество входов и хеш доменов.
в конце -- выдача статистики из хеша, домены из первого хеша индексируются ключами из второго хеша.

Автор: Pfailed 22.5.2013, 09:12
Цитата

Если не трудно пример наваять можно? 

свою попытку покажите

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)