Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


Если формат файла именно такой, то можно воспользоваться следующим набором шаблонов
Код: Выделить весь код
$sPath = @ScriptDir & '\log.txt'; положить рядом со скриптом файл с данными
$hFile = FileOpen($sPath, 0)
;$sText = '16:28:50   10.02.2010   188.17.248.182'
$sPattern_Time = '(\d\d:\d\d:\d\d)'; шаблон для вычленения времени
$sPattern_Date = '(\d\d\.\d\d\.\d\d\d\d)'; шаблон для вычленения даты
$sPattern_IP = '(\d+\.\d+\.\d+\.\d+)'; шаблон для вычленения IP

$sSum_allIP = ''; строка для хранения всех IP
$sSum_needIP = ''; строка для хранения повторяющихся IP
While 1
	$sLine = FileReadLine($hFile); построчное считывание файла
	If @error = -1 Then ExitLoop
	$sTime = StringRegExpReplace($sLine, $sPattern_Time & '\s+' & $sPattern_Date & '\s+' & $sPattern_IP, '\1'); ищем время
	$sDate = StringRegExpReplace($sLine, $sPattern_Time & '\s+' & $sPattern_Date & '\s+' & $sPattern_IP, '\2'); ищем дату
	$sIP = StringRegExpReplace($sLine, $sPattern_Time & '\s+' & $sPattern_Date & '\s+' & $sPattern_IP, '\3'); ищем IP
	If StringInStr($sSum_allIP, $sIP) Then; если есть повтор в IP
		If Not StringInStr($sSum_needIP, $sIP) Then $sSum_needIP &= $sIP & '|'; и если мы ранее не занесли этот IP в список, то заносим
	EndIf
	$sSum_allIP &= $sIP & '|'; включаем новый IP в список
WEnd
$sResult = StringTrimRight($sSum_needIP, 1); убираем последний pipe (|) для красоты
If StringLen($sResult) = 0 Then
	MsgBox(0, '', 'There no identical IPs'); нет повторяющихся IP
Else
	MsgBox(0, '', $sResult); список повторяющихся IP разделенных pipe'ом (|)
EndIf

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:52, 11-02-2010 | #2