Страница 1 из 1
Построчное слияние текстовых файлов
Добавлено: Вс окт 09, 2011 15:42
shveicar
Здравствуйте. Существует необходимость объединения нескольких (более двух) текстовых файлов с ссылками (в них присутствуют знаки вида ?,&,#,/,=). Необходимо произвести слияние текстовых файлов в один, - но не так, как это делает texpipe (поочередное добавление всех ссылок из каждого файла), а так, чтобы каждая строчка из каждого текстового файла бралась поочередно. пример:
1.txt-
Код: Выделить всё
http://forum.wincmd.ru/
http://forum.wincmd.ru/viewforum.php?f=3
2.txt -
3.txt -
Код: Выделить всё
http://www.hpc.ru/news/
http://www.hpc.ru/MacC/contacts/#buy
в результате должно получиться:- sliv.txt
Код: Выделить всё
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.
Добавлено: Вс окт 09, 2011 17:05
Flasher
А число строк в каждом файле всегда идентично?
Добавлено: Вс окт 09, 2011 17:37
shveicar
Число строк в каждом из текстовых файлов разное, и может каждый раз меняться(имеется ввиду- для каждого конкретного задания может быть разное количество строк) . (по идеи, если строки в каком-либо файле заканчиваются, скрипт должен продолжить сортировку- слияние из следующих выделенных файлов)
Добавлено: Вс окт 09, 2011 17:51
Flasher
shveicar писал(а):имеется ввиду- для каждого конкретного задания может быть разное количество строк
Разное кол-во строк в каждом из файлов? Я тогда не понимаю смысл такого извращения. Ну, останутся куски при достижении минимума, и как предлагается их отсортировывать, в соотвествии с чем?
Добавлено: Вс окт 09, 2011 19:10
shveicar
Flasher писал(а):Ну, останутся куски при достижении минимума, и как предлагается их отсортировывать, в соотвествии с чем?
- когда останется всего один файл, то строки из него, могут быть добавлены без сортировки, их всегда можно отделить и впоследствии повторно пересортировать.
Я тогда не понимаю смысл такого извращения
Смысл такого действия прост, существует на некоторых сайтах система защиты, которая не позволяет выкачивать контент, -если алгоритм закачки не соответствует определенной логике. Изменив последовательность ссылок,- возможно автоматизировать данный процесс. Спасибо. Надеюсь на понимание.
Добавлено: Вс окт 09, 2011 19:38
Flasher
shveicar писал(а):- когда останется всего один файл, то строки из него, могут быть добавлены без сортировки, их всегда можно отделить и впоследствии повторно пересортировать.
При чём тут один файл? Я пишу про разное число строк в выбранных файлах. Можно сопоставлять строки, когда их одинаковое число.
shveicar писал(а):существует на некоторых сайтах система защиты, которая не позволяет выкачивать контент...
Не понял, как это относится к оставшимся текстовым кускам? И не очень понял, зачем нужны эти файлы? Почему нельзя просто формировать списки нескачиваемых файлов на автомате?
Добавлено: Вс окт 09, 2011 21:52
shveicar
Flasher писал(а):Можно сопоставлять строки, когда их одинаковое число
Хорошо, пусть во всех объединяемых файлах- будет одинаковое число строк, если это упрощает задачу... (с помощью textpipe можно произвести предварительное выравнивание).
Не понял, как это относится к оставшимся текстовым кускам? И не очень понял, зачем нужны эти файлы? Почему нельзя просто формировать списки нескачиваемых файлов на автомате?
В том то и дело что не все так просто, некоторые адреса отсеянyые после закачки offline explorerom (он их почемуто не берет, так как используется переадресация (типа &path=/) с проверкой через safebrowsing-cache.google.com объединяются с другими адресами (имитирующими загрузку html браузером) и после объединения передаются в scrapbook в firefoxe. Просто, в ручную перемешивать ссылки (особенно если их много) - одуреть можно. Да и для более сложных случаев при формировании списка для iMacros такой вариант очень - бы пригодился.
Добавлено: Вс окт 09, 2011 22:18
Flasher
Короче, мой мозг ничего не понимает...
Сделал для файлов с разным числом строк.
Код: Выделить всё
' Построчное склеивание текстовых файлов
' Параметры: <список файлов> <путь к файлу-получателю>
' Пример: %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
Добавлено: Вс окт 09, 2011 22:29
Tol!k
Замечаньице:
не "отсортированных", а перетасованных
Добавлено: Вс окт 09, 2011 22:31
Flasher
Да это всего лишь пример названия файла. Хоть "дедяпетясъелмедведя.txt".

И, кстати, сортировать можно по разным критериям. Возьми те же колонки контентных плагинов.
Добавлено: Вс окт 09, 2011 23:23
shveicar
Большое Спасибо -
Flasher
Как всегда выручаешь, жаль что сначала вроде-бы простое действие, показалось таким сложным... Ну, списываю на Моё "запутанное" объяснение...

Вобщем, то - что нужно, Респект!
P.s
Flasher писал(а):И, кстати, сортировать можно по разным критериям
это Вы об этой строчке? n = n + 1
Добавлено: Вс окт 09, 2011 23:40
Flasher
Пожалуйста.
shveicar писал(а):жаль что сначала вроде-бы простое действие, показалось таким сложным...
Чтобы судить о простоте действия, надо бы самому соображать в скриптинге. Не так ли?
shveicar писал(а):это Вы об этой строчке? n = n + 1
Это всего лишь счётчик. Я про название файла и способ сортировки, который может быть каким угодно. В данном случае: файл + номер строки.