Что нового

Удаление дублирующихся строк из текстового файла

exHalfer

Новичок
Сообщения
12
Репутация
0
Есть текстовый файл log.txt вида
Код:
НП_МО Номер1
НП_МО Номер2
МОС Номер2
МОС Номер3
НП_МО Номер1
МОС Номер5
МОС Номер9
НП_МО Номер2
МОС Номер3
Из него необходимо удалить повторяющиеся строки (ну и символ переноса строки, соответственно). Что бы файл приобрел вид
Код:
НП_МО Номер1
НП_МО Номер2
МОС Номер2
МОС Номер3
МОС Номер5
МОС Номер9
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
exHalfer,
Можно примерно так попробовать.
Код:
$sText = 'НП_МО Номер1' & @CRLF & _
		'НП_МО Номер2' & @CRLF & _
		'МОС Номер2' & @CRLF & _
		'МОС Номер3' & @CRLF & _
		'НП_МО Номер1' & @CRLF & _
		'МОС Номер5' & @CRLF & _
		'МОС Номер9' & @CRLF & _
		'НП_МО Номер2' & @CRLF & _
		'МОС Номер3'

$aText = StringSplit(StringStripCR($sText), @LF)
$sText = ''
$o_Dict = ObjCreate('Scripting.Dictionary')
For $i = 1 To $aText[0]
	If $o_Dict.Exists($aText[$i]) Then ContinueLoop
	$o_Dict.add($aText[$i], 0)
	$sText &= $aText[$i] & @CRLF
Next
$o_Dict = 0
$aText = 0
ConsoleWrite(StringTrimRight($sText, 2) & @LF)
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
$str='НП_МО Номер1'& @CRLF & _
'НП_МО Номер2'& @CRLF & _
'МОС Номер2'& @CRLF & _
'МОС Номер3'& @CRLF & _
'НП_МО Номер1'& @CRLF & _
'МОС Номер5'& @CRLF & _
'МОС Номер9'& @CRLF & _
'НП_МО Номер2'& @CRLF & _
'МОС Номер3'& @CRLF
MsgBox(32,'',StringRegExpReplace($str,'(?sm)^([^\R]+)\R(?=.*\1)', ''))
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
А как насчет
Код:
#include <Array.au3>
#include <File.au3>

Dim $aArray
$sFilePath = "C:\File.txt"

_FileReadToArray($sFilePath, $aArray)
_ArrayUnique($aArray)
_ArrayDisplay($aArray)
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
madmasles
Ну это один из методов. Про время автор ничего не сказал :smile:
 
Автор
E

exHalfer

Новичок
Сообщения
12
Репутация
0
На самом деле, время выполнения особой роли не играет, т.к. файлов не много и они не большие. Большое спасибо за помощь :beer:
 
Верх