Полное удаление дубликатов строк в текстовом файле
Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik
Полное удаление дубликатов строк в текстовом файле
Здравствуйте, возникла такая проблема, - существует текстовой файл с множеством ссылок (в том числе присутствуют запрещенные знаки ?,\& и тд.) многие ссылки повторяются и не один раз. Возможно-ли удалить все дубликаты ссылок, но не так как это делает textpipe или некоторые другие программы (удаление всех дубликатов кроме одного), а полностью - то-есть удалить вообще все совпадающие строки, что-бы в файле остались только строки которые ни разу не повторялись. Заранее благодарен за помощь, Спасибо.
"Пока Чубайсы у руля науки: - Мы будем долго пачкать нано-брюки"
Хм. Задачу называть проблемой...
Код: Выделить всё
'=================================================================
' Оставить только уникальные строки в выделенных текстовых файлах
' без концевых пробелов и пустых строк
' Параметр: %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
Последний раз редактировалось Flasher Чт дек 22, 2011 00:50, всего редактировалось 2 раза.
- Моторокер
- Сообщения: 1517
- Зарегистрирован: Пт май 06, 2005 08:22
- Откуда: г. Пермь (читается Перьмь)
- Контактная информация:
Если софт всё же подойдёт, попробуй мою программу АвтоФормат – меню Сервис | Удалить все дубли. Не знаю только, как на больших объёмах покажет.
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
ПармаСруб - строительство домов и бань в Перми
Моторокер
Спасибо, программа неплохая, сегодня нашёл еще один способ с помощью скрипта AutoHotkey Выделенный файл под курсором, - копировать, - F11, - и результат рядом...
Спасибо, программа неплохая, сегодня нашёл еще один способ с помощью скрипта 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Незнаю, У меня на Xp пока, ничего не зависает, (возможно дело в глючности win7?) говорят - бывает проблема с русско-английским шрифтом (но это относиться к отдельным - конкретным случаям). А компиляция штука удобная (можно объединить несколько скриптов в один и сделать мини программу под свои нужды).Flasher писал(а):cудя по неожиданному зависанию на AutohotKey
shveicar
Зависание (в моём контексте) = необузданная тяга, а не вис процесса.
Компиляция - совершенно бестолковая вещь, жрущая лишнее пространство. Для объединения скриптов компиляция не нужна вовсе, да и объединять нужно далеко не всё.
В любом случае, очень странная позиция для задачи, которая была решена выше более оптимально на vbs с обработкой массива файлов, выбирать метод резидентности с подгрузкой трея...
Зависание (в моём контексте) = необузданная тяга, а не вис процесса.
Компиляция - совершенно бестолковая вещь, жрущая лишнее пространство. Для объединения скриптов компиляция не нужна вовсе, да и объединять нужно далеко не всё.
В любом случае, очень странная позиция для задачи, которая была решена выше более оптимально на vbs с обработкой массива файлов, выбирать метод резидентности с подгрузкой трея...
Не вопрос, ничего против vbs не имею., единственное что заставило поискать альтернативы (в данном случае) - сохранение результата в тот-же файл, иногда, такое не удобно.Flasher писал(а):В любом случае, очень странная позиция для задачи, которая была решена выше более оптимально на vbs
P.s Я не изготавливаю "инструменты" - Я ими только пользуюсь.