View previous topic :: View next topic |
Author |
Message |
shveicar

Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Wed Dec 21, 2011 14:43 Post subject: Полное удаление дубликатов строк в текстовом файле |
|
|
Здравствуйте, возникла такая проблема, - существует текстовой файл с множеством ссылок (в том числе присутствуют запрещенные знаки ?,\& и тд.) многие ссылки повторяются и не один раз. Возможно-ли удалить все дубликаты ссылок, но не так как это делает textpipe или некоторые другие программы (удаление всех дубликатов кроме одного), а полностью - то-есть удалить вообще все совпадающие строки, что-бы в файле остались только строки которые ни разу не повторялись. Заранее благодарен за помощь, Спасибо. _________________ "Пока Чубайсы у руля науки: - Мы будем долго пачкать нано-брюки" |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Dec 21, 2011 23:18 Post subject: |
|
|
Хм. Задачу называть проблемой...
Code: | '=================================================================
' Оставить только уникальные строки в выделенных текстовых файлах
' без концевых пробелов и пустых строк
' Параметр: %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 |
Last edited by Flasher on Thu Dec 22, 2011 00:50; edited 2 times in total |
|
Back to top |
|
 |
shveicar

Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Thu Dec 22, 2011 00:33 Post subject: |
|
|
Спасибо Flasher В который раз выручаешь. _________________ "Пока Чубайсы у руля науки: - Мы будем долго пачкать нано-брюки" |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Dec 22, 2011 00:50 Post subject: |
|
|
Пож-та. Кое-что подправил. |
|
Back to top |
|
 |
Моторокер

Joined: 06 May 2005 Posts: 1517 Location: г. Пермь (читается Перьмь)
|
(Separately) Posted: Mon Dec 26, 2011 17:41 Post subject: |
|
|
Если софт всё же подойдёт, попробуй мою программу АвтоФормат – меню Сервис | Удалить все дубли. Не знаю только, как на больших объёмах покажет. _________________ плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми |
|
Back to top |
|
 |
shveicar

Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Sun Mar 18, 2012 14:44 Post subject: |
|
|
Моторокер
Спасибо, программа неплохая, сегодня нашёл еще один способ с помощью скрипта AutoHotkey
Code: |
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, - и результат рядом... |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Mar 18, 2012 15:10 Post subject: |
|
|
shveicar
Так нравятся резидентные скрипты с эмуляцией нажатий клавиш?
Ууу, да ещё и буфер обмена...
Судя по неожиданному зависанию на AutohotKey, надеюсь, уже начинает доходить, что компиляция не востребована?  |
|
Back to top |
|
 |
shveicar

Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Sun Mar 18, 2012 18:36 Post subject: |
|
|
Flasher wrote: | cудя по неожиданному зависанию на AutohotKey |
Незнаю, У меня на Xp пока, ничего не зависает, (возможно дело в глючности win7?) говорят - бывает проблема с русско-английским шрифтом (но это относиться к отдельным - конкретным случаям). А компиляция штука удобная (можно объединить несколько скриптов в один и сделать мини программу под свои нужды). |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Mar 18, 2012 18:49 Post subject: |
|
|
shveicar
Зависание (в моём контексте) = необузданная тяга, а не вис процесса.
Компиляция - совершенно бестолковая вещь, жрущая лишнее пространство. Для объединения скриптов компиляция не нужна вовсе, да и объединять нужно далеко не всё.
В любом случае, очень странная позиция для задачи, которая была решена выше более оптимально на vbs с обработкой массива файлов, выбирать метод резидентности с подгрузкой трея... |
|
Back to top |
|
 |
shveicar

Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Sun Mar 18, 2012 19:05 Post subject: |
|
|
Flasher wrote: | В любом случае, очень странная позиция для задачи, которая была решена выше более оптимально на vbs | Не вопрос, ничего против vbs не имею., единственное что заставило поискать альтернативы (в данном случае) - сохранение результата в тот-же файл, иногда, такое не удобно.
P.s Я не изготавливаю "инструменты" - Я ими только пользуюсь. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Mar 18, 2012 19:08 Post subject: |
|
|
shveicar wrote: | иногда, такое не удобно | Как поставлена задача - так и решена. Надо было бы сохранять результат в другой файл - так бы и сделал. Это уже проблема вопрошающего, а не автора решения.
И странно, что интерес проснулся к обсуждению этого ahk-костыля, а не моего vbs-скрипта по MIME.. |
|
Back to top |
|
 |
|