Что нового

Сравнение и замена текста в 2 txt файлах

necrobit

Новичок
Сообщения
9
Репутация
0
Помогите, пожалуйста, кодом решения следующей проблемы

есть два тхт файла
первый содержит текст следующего вида

Андрей;123;789
Светлана;7250;924
Игорь;756758;7538

второй содержит текст следующего вида

123;789;QQQ
7250;924;RRR
756758;7538;TTT

нужно сделать их сравнение и замену при совпадении и сохранение в отдельный файл
пример
Андрей;123;789 = 123;789;QQQ сохранение Андрей;QQQ
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
#include <SQLite.au3>
#include <SQLite.dll.au3>
$file=FileRead(@ScriptDir&'\123')
$str=StringRegExp($file,'[^;\r\n]+',3)


Local $aResults, $iRows, $iColumns

			_SQLite_Startup()
			Select
				Case @error
					MsgBox(32, '', 'невозможно работать с db')
					Exit 1111
			EndSelect
			$hDb_mem = _SQLite_Open()


	_SQLite_Exec($hDb_mem, 'create table if not exists t1 (a,b,c text);')
	_SQLite_Exec($hDb_mem, 'create table if not exists t2 (a,b,c text);')
	$zzz=''
	For $i = 0 To UBound($str)-1 Step 3
		$zzz&='insert into t1 values ("' & $str[$i] & '","' & $str[$i+1] & '","' & $str[$i+2]& '");'
	Next
	$file=FileRead(@ScriptDir&'\321')
	$str1=StringRegExp($file,'[^;\r\n]+',3)
	For $i = 0 To UBound($str1)-1 Step 3
		$zzz&='insert into t2 values ("' & $str1[$i] & '","' & $str1[$i+1] & '","' & $str1[$i+2]& '");'
	Next
	_SQLite_Exec($hDb_mem, "begin;")
	_SQLite_Exec($hDb_mem, $zzz)
	_SQLite_Exec($hDb_mem, "commit;")

	_SQLite_GetTable2d($hDb_mem, 'select t1.a,t2.c from t1,t2 where t1.b=t2.a and t1.c=t2.b;', $aResults, $iRows, $iColumns)
	$zzz=''
	For $i = 1 To  UBound($aResults)-1
		$zzz&=$aResults[$i][0]&';'&$aResults[$i][1]& @CRLF
	Next
	FileWrite(@DesktopDir&'\213',$zzz)
_SQLite_Close($hDb_mem)
_SQLite_Shutdown()
 
Автор
N

necrobit

Новичок
Сообщения
9
Репутация
0
sngr сказал(а):
Код:
#include <SQLite.au3>
#include <SQLite.dll.au3>
$file=FileRead(@ScriptDir&'\123')
$str=StringRegExp($file,'[^;\r\n]+',3)


Local $aResults, $iRows, $iColumns

			_SQLite_Startup()
			Select
				Case @error
					MsgBox(32, '', 'невозможно работать с db')
					Exit 1111
			EndSelect
			$hDb_mem = _SQLite_Open()


	_SQLite_Exec($hDb_mem, 'create table if not exists t1 (a,b,c text);')
	_SQLite_Exec($hDb_mem, 'create table if not exists t2 (a,b,c text);')
	$zzz=''
	For $i = 0 To UBound($str)-1 Step 3
		$zzz&='insert into t1 values ("' & $str[$i] & '","' & $str[$i+1] & '","' & $str[$i+2]& '");'
	Next
	$file=FileRead(@ScriptDir&'\321')
	$str1=StringRegExp($file,'[^;\r\n]+',3)
	For $i = 0 To UBound($str1)-1 Step 3
		$zzz&='insert into t2 values ("' & $str1[$i] & '","' & $str1[$i+1] & '","' & $str1[$i+2]& '");'
	Next
	_SQLite_Exec($hDb_mem, "begin;")
	_SQLite_Exec($hDb_mem, $zzz)
	_SQLite_Exec($hDb_mem, "commit;")

	_SQLite_GetTable2d($hDb_mem, 'select t1.a,t2.c from t1,t2 where t1.b=t2.a and t1.c=t2.b;', $aResults, $iRows, $iColumns)
	$zzz=''
	For $i = 1 To  UBound($aResults)-1
		$zzz&=$aResults[$i][0]&';'&$aResults[$i][1]& @CRLF
	Next
	FileWrite(@DesktopDir&'\213',$zzz)
_SQLite_Close($hDb_mem)
_SQLite_Shutdown()

спасибо за ваш ответ но мне это не подходит т.к нужно сравнивать 2 текстовых файла
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
FileRead(@ScriptDir&'\123')
здесь
Андрей;123;789
Светлана;7250;924
Игорь;756758;7538
FileRead(@ScriptDir&'\321')
тут
123;789;QQQ
7250;924;RRR
756758;7538;TTT
это и есть 2 текстовых файла, меняешь пути на свои
 
Автор
N

necrobit

Новичок
Сообщения
9
Репутация
0
sngr сказал(а):
FileRead(@ScriptDir&'\123')
здесь
Андрей;123;789
Светлана;7250;924
Игорь;756758;7538
FileRead(@ScriptDir&'\321')
тут
123;789;QQQ
7250;924;RRR
756758;7538;TTT
это и есть 2 текстовых файла, меняешь пути на свои

при выполнении скрипта получаю меседжбокс "невозможно работать с db"
проблема решилась добовлением sqllitex64 в папку со скриптом

но скрипт всё ровно не рабочий , после отрабатывания файл результата пустой
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
ты правильно файлы подставил? Первый FileRead(@ScriptDir&'\123') должен быть с Андрей;123;789
 
Автор
N

necrobit

Новичок
Сообщения
9
Репутация
0
sngr сказал(а):
ты правильно файлы подставил? Первый FileRead(@ScriptDir&'\123') должен быть с Андрей;123;789

правильно, скрипт отрабатывает но файл результата создаётся пустой
 
Автор
N

necrobit

Новичок
Сообщения
9
Репутация
0
sngr сказал(а):
показывай файлы

_ttp://prntscr.com/caz7ra как то так

всё разобрался, надо было с файлов убрать расширение огромное спасибо за помощь =)
 
Верх