YuS_2
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Richard_Nixon 02-08-2017 Цитата: пополнилось необходимостью суммировать количество обращений с четырех известных IP (за заданный get-date период), причем отдельными $arr этого скрипта. | В общем, если правильно понял, то требуется это: Код: function useinc ($x){ process{ if($_ -match $x){$_} } } #Фильтры $fexc='\burub\b' $finc1='\bft_request\b' $finc2='\b(?>FTBIB|FTPR|FTALL|FTNG|FTLIT)_READER\b' $finc3='(?<=_)fulltext&c21com=2&p21dbn\b' #Фильтры по IP $fip1='host\=66\.249\.76\.49\b' $fip2='host\=66\.249\.76\.\d{1,3}\b' $fip3='(?>host\=66\.249\.79\.181|host\=66\.249\.64\.143)' $fip4='host\=66\.249\.64\.143' #Отбор строк по диапазону дат: $dbeg = get-date("26.03.2017") $dend = get-date("28.03.2017") $strdat = gc ".\fulltext*.log" -enc UTF8|%{ $str = get-date($($_ -replace '^.*datetime=(\d+\.\d+\.\d+)\s.*','$1')) if($str -le $dend -and $str -ge $dbeg){$_} } #Выборка из предыдущего результата, исключающая строки: $arr1 = $strdat|%{if($_ -notmatch $fexc){$_}} #Выборка из предыдущего результата, отбор строк по совпадению: $arr2 = $arr1|useinc $finc1 $arr3 = $arr1|useinc $finc2 $arr4 = $arr1|useinc $finc3 #Выборка по IP фильтрам $arrIP1 = $arr1|useinc $fip1 $arrIP2 = $arr1|useinc $fip2 $arrIP3 = $arr1|useinc $fip3 $arrIP4 = $arr1|useinc $fip4 &{ "всего обращений к БД включая внешние поисковые системы: "+$($strdat.count) "Пользовательских обращений к БД, всего, включая загрузки, без учета обращений поисковыми системами: "+$($arr1.count) "Всего просмотренных документов пользователями, включая скачанные: "+$($arr2.count) "Всего просмотренных страниц документа пользователями: "+$($arr3.count) "Всего загруженных документов пользователями из БД: "+$($arr4.count) "Всего просмотренных страниц документов пользователями с IP адреса 66.249.76.49: "+$($arrIP1.count) "Всего просмотренных страниц документов пользователями из сети 66.249.76.*: "+$($arrIP2.count) "Всего просмотренных страниц документов пользователями с IP адреса 66.249.79.181 и 66.249.64.143: "+$($arrIP3.count) "Всего просмотренных страниц документов пользователями с IP адреса 66.249.64.143: "+$($arrIP4.count) }|out-file "out_$(get-date -f {yyyy.MM.dd_HH-mm}).txt" -enc default -force | - здесь все выборки из $arr1, но по аналогии можно добавить выборки и по другим отобранным строкам... Добавлено: 02-08-2017 Цитата: Тут главное не ошибаться с именованием переменных. В частности, у Вас отсутствует $arr6 ... Наверное, нумерацию переменных по IP лучше выделить в отдельный массив, как в моем примере... меньше будет ошибок. | Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 18:50 02-08-2017 | Исправлено: YuS_2, 09:29 03-08-2017 |
|