Страница 1 из 1
Полное удаление дубликатов строк в текстовом файле
Добавлено: Ср дек 21, 2011 14:43
shveicar
Здравствуйте, возникла такая проблема, - существует текстовой файл с множеством ссылок (в том числе присутствуют запрещенные знаки ?,\& и тд.) многие ссылки повторяются и не один раз. Возможно-ли удалить все дубликаты ссылок, но не так как это делает textpipe или некоторые другие программы (удаление всех дубликатов кроме одного), а полностью - то-есть удалить вообще все совпадающие строки, что-бы в файле остались только строки которые ни разу не повторялись. Заранее благодарен за помощь, Спасибо.
Добавлено: Ср дек 21, 2011 23:18
Flasher
Хм. Задачу называть проблемой...
Код: Выделить всё
'=================================================================
' Оставить только уникальные строки в выделенных текстовых файлах
' без концевых пробелов и пустых строк
' Параметр: %L
'=================================================================
If WScript.Arguments.Count = 0 Then WScript.Quit
L = vbNewLine
Set D = CreateObject("Scripting.Dictionary")
Set G = CreateObject("Scripting.Dictionary")
Set FSO = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
For Each F in Split(FSO.OpenTextFile(WScript.Arguments(0)).ReadAll, L)
If F > vbNullString Then
For Each Str in Split(FSO.OpenTextFile(F, 1, -2).ReadAll, L)
Str = Trim(Str)
If Str <> "" Then
D.Add Str, ""
If Err.Number = 457 Then : G.Add Str, "" : Err.Clear : End If
End If
Next
For Each K in G.Keys : D.Remove(K) : Next
For Each N in D.Keys : S = S & N & L : Next
FSO.OpenTextFile(F, 2, -2).Write Trim(S)
D.RemoveAll : G.RemoveAll
End If
Next
Set FSO = Nothing : Set D = Nothing : Set G = Nothing : WScript.Quit
Добавлено: Чт дек 22, 2011 00:33
shveicar
Спасибо Flasher В который раз выручаешь.
Добавлено: Чт дек 22, 2011 00:50
Flasher
Пож-та. Кое-что подправил.
Добавлено: Пн дек 26, 2011 17:41
Моторокер
Если софт всё же подойдёт, попробуй мою программу АвтоФормат – меню Сервис | Удалить все дубли. Не знаю только, как на больших объёмах покажет.
Добавлено: Вс мар 18, 2012 14:44
shveicar
Моторокер
Спасибо, программа неплохая, сегодня нашёл еще один способ с помощью скрипта AutoHotkey
Код: Выделить всё
f11::
clipboard =
Send, ^{vk43} ; Ctrl + C
ClipWait, 2
if ErrorLevel
{
MsgBox, Буфер обмена пуст!
Return
}
Loop, parse, clipboard, `n, `r
{
FileRead, Text, %clipboard%
Sort, Text, U
FileAppend, %Text%, %clipboard%_Target.txt
Send, ^{vk52} ; Ctrl + R
}
F12:: ExitApp
Выделенный файл под курсором, - копировать, - F11, - и результат рядом...
Добавлено: Вс мар 18, 2012 15:10
Flasher
shveicar
Так нравятся резидентные скрипты с эмуляцией нажатий клавиш?

Ууу, да ещё и буфер обмена...
Судя по неожиданному зависанию на AutohotKey, надеюсь, уже начинает доходить, что компиляция не востребована? 
Добавлено: Вс мар 18, 2012 18:36
shveicar
Flasher писал(а):cудя по неожиданному зависанию на AutohotKey
Незнаю, У меня на Xp пока, ничего не зависает, (возможно дело в глючности win7?) говорят - бывает проблема с русско-английским шрифтом (но это относиться к отдельным - конкретным случаям). А компиляция штука удобная (можно объединить несколько скриптов в один и сделать мини программу под свои нужды).
Добавлено: Вс мар 18, 2012 18:49
Flasher
shveicar
Зависание (в моём контексте) = необузданная тяга, а не вис процесса.

Компиляция - совершенно бестолковая вещь, жрущая лишнее пространство. Для объединения скриптов компиляция не нужна вовсе, да и объединять нужно далеко не всё.
В любом случае, очень странная позиция для задачи, которая была решена выше более оптимально на vbs с обработкой массива файлов, выбирать метод резидентности с подгрузкой трея...
Добавлено: Вс мар 18, 2012 19:05
shveicar
Flasher писал(а):В любом случае, очень странная позиция для задачи, которая была решена выше более оптимально на vbs
Не вопрос, ничего против vbs не имею., единственное что заставило поискать альтернативы (в данном случае) - сохранение результата в тот-же файл, иногда, такое не удобно.
P.s Я не изготавливаю "инструменты" - Я ими только пользуюсь.
Добавлено: Вс мар 18, 2012 19:08
Flasher
shveicar писал(а):иногда, такое не удобно
Как поставлена задача - так и решена. Надо было бы сохранять результат в другой файл - так бы и сделал. Это уже проблема вопрошающего, а не автора решения.
И странно, что интерес проснулся к обсуждению этого ahk-костыля, а не моего vbs-скрипта по MIME..