Что нового

[Данные, строки] Сравнение строк двух txt файлов

xishnik

Новичок
Сообщения
51
Репутация
0
Всем привет.
Описание:
Cравнить два списка прокси(ip:blum:ort).
Оба списка в txt формате.
В первом списке у меня база прокси
Во втором списке у меня прокси, которые мне не подошли.
Нужно из первого списка вычеркнуть все прокси, которые есть во втором и записать в третий.
Предположим что в первом списке у нас 10 строк, а во втором 5
нужно взять первую строку первого списка, сравнить по очереди с 5-ти строками второго списка, при первом совпадении нужно сразу брать вторую строку и также её сравнивать, если совпадений не найдено то записать строку в третий файл.
Может и есть способы полегче.
Цель программы: Вычеркнуть из первого файла с проксями те, которые забанены и находятся во втором файле, результат сохранять в третий файл.
Зачем это надо?: У меня есть чекер прокси для определенного сайта, скорость чека очень низкая, проверяет одну прокси 1-3 минуты. Берет он их из source.txt и если прокси рабочая записывает её в good.txt, если плохая то в bad.txt.
В source.txt всегда примерно 500-1000 проксей. Из них бы получилось 10-20 хороших прокси и остальные плохие.
Source.txt будет обновляться каждые 5 минут, и 400 из 500 там будут те же прокси что чекались, и какая-то часть свежих.
Очень хотелось бы чтобы чекер не проверял по 100 раз те прокси, которые уже прочеканы и не подошли. Это очень большая потеря времени.
Все файлы в формате IP:blum:ort, вот пример:
24.203.89.157:37278
52.6.120.154:1080
207.190.116.231:15375
65.182.43.88:13002
107.191.63.92:1080
37.59.13.53:8864
82.140.26.209:13002
112.126.66.21:1080
24.226.245.204:13002
96.254.179.121:16077
202.129.7.99:13002
202.117.14.149:1080
78.225.123.182:41529
Заранее спасибо за помощь.
 

ildar

Осваивающий
Сообщения
246
Репутация
28
xishnik
Чтобы было от чего отталкиваться, файлы нужны, которые нужно обрабатывать.(хотя бы часть)
 
Автор
xishnik

xishnik

Новичок
Сообщения
51
Репутация
0
ildar сказал(а):
xishnik
Чтобы было от чего отталкиваться, файлы нужны, которые нужно обрабатывать.(хотя бы часть)
Скажи какие именно? Я изменил немного описание, может так будет понятнее.
 

StarEdik

Новичок
Сообщения
365
Репутация
4
http://autoit-script.ru/index.php?topic=4861.msg35295#msg35295
 

mr.Gbabak

Осваивающий
Сообщения
250
Репутация
21
Код:
#include <File.au3>
#include <Array.au3>
Local $aRecords, $bRecords
Dim $cRecords[1]
$a = 0
If Not _FileReadToArray(@ScriptDir & "\10.txt", $aRecords) Then
    MsgBox(4096, "Ошибка", " Ошибка чтения файла в массив     Ошибка = " & @error)
    Exit
EndIf

If Not _FileReadToArray(@ScriptDir & "\11.txt", $bRecords) Then
    MsgBox(4096, "Ошибка", " Ошибка чтения файла в массив     Ошибка = " & @error)
    Exit
EndIf

ReDim $cRecords[UBound($aRecords)-UBound($bRecords)]
For $i=1 To UBound ($aRecords)-1
	For $j= 1 To UBound ($bRecords)-1
		If $aRecords [$i]=$bRecords[$j] Then ExitLoop

		If $j=UBound($bRecords)-1 And $aRecords [$i]<>$bRecords[$j] Then
			$cRecords[$a] = $aRecords[$i]
			$cRecords[$a]
			$a+=1
		EndIf
	Next
Next
_ArrayDisplay($cRecords)
_FileWriteFromArray (@ScriptDir & "\12.txt", $cRecords)
 

C2H5OH

AutoIT Гуру
Сообщения
1 473
Репутация
333
StarEdik сказал(а):
http://autoit-script.ru/index.php?topic=4861.msg35295#msg35295
Вариант Suppir не будет работать.
В случае ТС, в строках, которые используются в качестве шаблона, присутствуют точки. Поэтому StringRegExpReplace будет находить совсем не то что вы ожидаете.
 

StarEdik

Новичок
Сообщения
365
Репутация
4
C2H5OH

StringRegExpReplace будет находить совсем не то что вы ожидаете
Вариант от Suppir работает, по крайней мере у меня. Но вам виднее. Можете сами проверить.
Вот скрипт
Код:
global $lines[1], $test1, $test2

$test1=FileRead(@ScriptDir & "\source.txt")
$test2=FileRead(@ScriptDir & "\bad.txt")

$lines = StringRegExp($test2, "(?m)^(.+)$", 3)

For $x = 0 to Ubound ($lines) - 1
    $test1 = StringRegExpReplace($test1, "(?m)" & $lines[$x] & "[\r\n]?", "")
Next

FileWrite(@ScriptDir & "\good.txt", $test1)


а вот и файлы для проверки
Код:
файл  "source.txt"
11.203.89.157:37027
52.6.120.154:1080
207.190.116.231:15375
65.182.43.88:13002
107.191.63.92:1080
37.59.13.53:8864
81.140.26.209:13027
112.126.66.21:1080
24.226.245.204:13002
96.254.179.121:16077
211.129.7.99:14027
202.117.14.149:1080
78.225.123.182:41529
21.203.89.157:37227
71.220.123.182:41227
91.250.179.121:16027
101.191.63.92:108027
61.182.43.88:130027

файл "bad.txt"
52.6.120.154:1080
207.190.116.231:15375
65.182.43.88:13002
107.191.63.92:1080
37.59.13.53:8864
112.126.66.21:1080
24.226.245.204:13002
96.254.179.121:16077
202.117.14.149:1080
78.225.123.182:41529

Результат  " good.txt"
11.203.89.157:37027
81.140.26.209:13027
211.129.7.99:14027
21.203.89.157:37227
71.220.123.182:41227
91.250.179.121:16027
101.191.63.92:108027
61.182.43.88:130027

скрин от "Beyond Compare"
 

Вложения

  • 18,6 КБ Просмотры: 21

mr.Gbabak

Осваивающий
Сообщения
250
Репутация
21
Вариант от Suppir работает быстрее чем мой в 1.5 раза, да и решение попроще.
 
Верх