Тут находится код скрипта с помощью которого можно распарсить Excel файл с детализацией от Мегафона.
У мне нет Excel (так как нет windows). На моем макбуке в программе Number мне не удалось открыть этот excel файл от мегафона (и в онлайн версии Excel этот файл тоже не открывался.
Но этот файл — это xml, который можно достаточно просто распарсить. И я написал скрипт, который парсит этот excel файл и выдает в stdout tsv данные.
Для того чтобы использовать этот скрипт, удобнее всего все собрать докером:
time docker build --tag parse_megafon_excel .
А дальше использовать (excel файл должен быть сохранен в виде файла a.xlsx в текущей папке):
time docker run \
--rm \
--volume `pwd`:/data \
parse_megafon_excel > megafon.tsv
После этого в файле megafon.tsv будет что-то вроде:
Стр. 1
Бессарабов Иван Михайлович
за период с 01.07.2015 00:00:00 по 01.11.2015 18:58:28
Детализация оказанных услуг по Абонентскому номеру 9151234567
Дата Время Абонентский номер, адрес электронной почты, точка доступа Прод/ Объем Единица тарификации (мин, сек, шт, Kb, Mb) Вид услуги Место вызова Стоимость (с НДС), руб.
01.07.15 00:25:17 Premium GPRS 650 0.004 Мб. Мобильный интернет 0.00
01.07.15 01:48:23 79851234567 1 Шт. Входящее SMS 0.00
01.07.15 08:46:31 4951234567 00:11 Минута Входящий 0.00
...
А далье уже можно брать этот tsv файл и получать из него нужные данные, например, можно использовать такой однострочник, сколько тратил на sms каждый месяц:
cat log |grep -i sms|grep Исходящее | perl -MDDP -nalE \
'my ($day, $month, $year) = split(/\./, $F[0]); my $key = "20$year-$month"; $sum{$key}+=$F[7]; }{ p \%sum;'