View previous topic :: View next topic |
Author |
Message |
shveicar
Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Sun Oct 09, 2011 15:21 Post subject: Построчное слияние текстовых файлов |
|
|
Здравствуйте. Существует необходимость объединения нескольких (более двух) текстовых файлов с ссылками (в них присутствуют знаки вида ?,&,#,/,=). Необходимо произвести слияние текстовых файлов в один, - но не так, как это делает texpipe (поочередное добавление всех ссылок из каждого файла), а так, чтобы каждая строчка из каждого текстового файла бралась поочередно. пример:
1.txt- Code: |
http://forum.wincmd.ru/
http://forum.wincmd.ru/viewforum.php?f=3 |
2.txt - Code: | http://www.mail.ru/
http://www.hpc.ru/
|
3.txt - Code: | http://www.hpc.ru/news/
http://www.hpc.ru/MacC/contacts/#buy |
в результате должно получиться:- sliv.txt Code: |
http://forum.wincmd.ru/
http://www.mail.ru/
http://www.hpc.ru/news/
http://forum.wincmd.ru/viewforum.php?f=3
http://www.hpc.ru/
http://www.hpc.ru/MacC/contacts/#buy | Заранее благодарен за помощь.
Добавлено спустя 21 минуту:
Допустим, файлы будут выделяются в текущей панели, - а на противоположной появляется один общий файл. Спасибо Flasher. _________________ "Пока Чубайсы у руля науки: - Мы будем долго пачкать нано-брюки" |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Oct 09, 2011 17:05 Post subject: |
|
|
А число строк в каждом файле всегда идентично? |
|
Back to top |
|
|
shveicar
Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Sun Oct 09, 2011 17:37 Post subject: |
|
|
Число строк в каждом из текстовых файлов разное, и может каждый раз меняться(имеется ввиду- для каждого конкретного задания может быть разное количество строк) . (по идеи, если строки в каком-либо файле заканчиваются, скрипт должен продолжить сортировку- слияние из следующих выделенных файлов) _________________ "Пока Чубайсы у руля науки: - Мы будем долго пачкать нано-брюки" |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Oct 09, 2011 17:51 Post subject: |
|
|
shveicar wrote: | имеется ввиду- для каждого конкретного задания может быть разное количество строк | Разное кол-во строк в каждом из файлов? Я тогда не понимаю смысл такого извращения. Ну, останутся куски при достижении минимума, и как предлагается их отсортировывать, в соотвествии с чем? |
|
Back to top |
|
|
shveicar
Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Sun Oct 09, 2011 19:10 Post subject: |
|
|
Flasher wrote: | Ну, останутся куски при достижении минимума, и как предлагается их отсортировывать, в соотвествии с чем? | - когда останется всего один файл, то строки из него, могут быть добавлены без сортировки, их всегда можно отделить и впоследствии повторно пересортировать. Quote: | Я тогда не понимаю смысл такого извращения | Смысл такого действия прост, существует на некоторых сайтах система защиты, которая не позволяет выкачивать контент, -если алгоритм закачки не соответствует определенной логике. Изменив последовательность ссылок,- возможно автоматизировать данный процесс. Спасибо. Надеюсь на понимание. _________________ "Пока Чубайсы у руля науки: - Мы будем долго пачкать нано-брюки" |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Oct 09, 2011 19:38 Post subject: |
|
|
shveicar wrote: | - когда останется всего один файл, то строки из него, могут быть добавлены без сортировки, их всегда можно отделить и впоследствии повторно пересортировать. | При чём тут один файл? Я пишу про разное число строк в выбранных файлах. Можно сопоставлять строки, когда их одинаковое число.
shveicar wrote: | существует на некоторых сайтах система защиты, которая не позволяет выкачивать контент... | Не понял, как это относится к оставшимся текстовым кускам? И не очень понял, зачем нужны эти файлы? Почему нельзя просто формировать списки нескачиваемых файлов на автомате? |
|
Back to top |
|
|
shveicar
Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Sun Oct 09, 2011 21:52 Post subject: |
|
|
Flasher wrote: | Можно сопоставлять строки, когда их одинаковое число | Хорошо, пусть во всех объединяемых файлах- будет одинаковое число строк, если это упрощает задачу... (с помощью textpipe можно произвести предварительное выравнивание).
Quote: | Не понял, как это относится к оставшимся текстовым кускам? И не очень понял, зачем нужны эти файлы? Почему нельзя просто формировать списки нескачиваемых файлов на автомате? | В том то и дело что не все так просто, некоторые адреса отсеянyые после закачки offline explorerom (он их почемуто не берет, так как используется переадресация (типа &path=/) с проверкой через safebrowsing-cache.google.com объединяются с другими адресами (имитирующими загрузку html браузером) и после объединения передаются в scrapbook в firefoxe. Просто, в ручную перемешивать ссылки (особенно если их много) - одуреть можно. Да и для более сложных случаев при формировании списка для iMacros такой вариант очень - бы пригодился. _________________ "Пока Чубайсы у руля науки: - Мы будем долго пачкать нано-брюки" |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Oct 09, 2011 22:18 Post subject: |
|
|
Короче, мой мозг ничего не понимает...
Сделал для файлов с разным числом строк.
Code: | ' Построчное склеивание текстовых файлов
' Параметры: <список файлов> <путь к файлу-получателю>
' Пример: %L "%TСписок_отсортированных_ссылок.txt"
'======================================================
With CreateObject("Scripting.FileSystemObject")
Set TF = .OpenTextFile(WScript.Arguments(0), 1)
On Error Resume Next
For Each M in Split(TF.ReadAll, vbNewLine)
A = Ubound(Split(.OpenTextFile(M).ReadAll, vbNewLine))
If Max < A Then Max = A
Next
TF.Close
n = 0
Set List = .OpenTextFile(WScript.Arguments(1), 8, True)
Do While n <= Max
Set TF = .OpenTextFile(WScript.Arguments(0), 1)
Do While Not TF.AtEndOfStream
F = TF.ReadLine
If F > vbNullString Then
If .FileExists(F) Then
L = Split(.OpenTextFile(F).ReadAll, vbNewLine)
If Trim(L(n)) <> "" Then List.WriteLine L(n)
End If
End If
Loop
TF.Close
n = n + 1
Loop
List.Close
End With |
|
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Sun Oct 09, 2011 22:29 Post subject: |
|
|
Замечаньице:
не "отсортированных", а перетасованных |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Oct 09, 2011 22:31 Post subject: |
|
|
Да это всего лишь пример названия файла. Хоть "дедяпетясъелмедведя.txt".
И, кстати, сортировать можно по разным критериям. Возьми те же колонки контентных плагинов. |
|
Back to top |
|
|
shveicar
Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Sun Oct 09, 2011 23:23 Post subject: |
|
|
Большое Спасибо - Flasher
Как всегда выручаешь, жаль что сначала вроде-бы простое действие, показалось таким сложным... Ну, списываю на Моё "запутанное" объяснение... Вобщем, то - что нужно, Респект!
P.s Flasher wrote: | И, кстати, сортировать можно по разным критериям | это Вы об этой строчке? n = n + 1 _________________ "Пока Чубайсы у руля науки: - Мы будем долго пачкать нано-брюки" |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Oct 09, 2011 23:40 Post subject: |
|
|
Пожалуйста.
shveicar wrote: | жаль что сначала вроде-бы простое действие, показалось таким сложным... | Чтобы судить о простоте действия, надо бы самому соображать в скриптинге. Не так ли?
shveicar wrote: | это Вы об этой строчке? n = n + 1 | Это всего лишь счётчик. Я про название файла и способ сортировки, который может быть каким угодно. В данном случае: файл + номер строки. |
|
Back to top |
|
|
|