Что нового

Cравнить 2 тхт файла, найти не совпадаюших и удалить

bigarN

Новичок
Сообщения
50
Репутация
0
Таких тем и сообшений на форуме не удалос найти. Как сравнить 2 тхт файла, найти не совпадаюших и удалить, а из совпадаюших создать новый тхт файл.

Тут http://autoit-script.ru/index.php?topic=4861.msg35295#msg35295 скрипт удаляет из
файла любые строки, которые совпадают с теми, что в массиве. А мне бы на оборот. Оставить совпадающих, удалить уникальных.
Как составить регулярку для этой задачи
Код:
global $lines[1], $test1, $test2

$test1=FileRead("test1.txt")
$test2=FileRead("test2.txt")

;~ получаем массив строк из файла test1
$lines = StringRegExp($test1, "(?m)^(.+)$", 3)

;~ удаляем из файла test2 любые строки, которые совпадают с теми, что в массиве
For $x = 0 to Ubound ($lines) - 1
   ; $test2 = StringRegExpReplace($test2, "(?m)" & $lines[$x] & "[\r\n]?", "")
    
Next

;~ выводим оставшиеся строки
FileWrite("test3.txt", $test2)
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
bigarN
Оставить совпадающих, удалить уникальных.
Код:
$a1 = FileReadToArray("Name1.txt")
$a2 = FileReadToArray("Name2.txt")
$s0 = ""
For $i = 0 To UBound($a1) - 1
  For $j = 0 To UBound($a2) - 1
    If $a1[$i] = $a2[$j] Then
      $s0 &= $a1[$i] & @CRLF
      ExitLoop
    EndIf
  Next
Next
FileWrite("Result.txt", $s0)
 
Автор
B

bigarN

Новичок
Сообщения
50
Репутация
0
InnI
ОК, а как удалить повторы. Так?
Код:
$var = StringSplit($s0, @CR)
_ArrayDisplay($var)
$aNewArray = _ArrayUnique($var) 
_ArrayDisplay($aNewArray)
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
bigarN
удалить повторы. Так?
Можно и так. А можно расширить условие и сразу их игнорировать
Код:
If $a1[$i] = $a2[$j] And Not StringInStr($s0, $a1[$i]) Then
 
Верх