Войти

Показать полную графическую версию : [решено] Объединение похожих ссылок


Alexander_88
19-03-2015, 16:26
Здравствуйте, я опять за помощью :)
Присутствует список ссылок в тхт файле.. пример:

<a href="http://loogle.com/file/acc4b05d85/00010start_VFG-181_google.com.wmv" target="_blank">[VFG-181] - 2.2 GB</a>
<a href="http://loogle.com/file/04e5zfs3e0c4e3/00011start_START-141_A_google.com.wmv" target="_blank">[START-141_A] - 854.2 MB</a>
<a href="http://loogle.com/file/a529ehgdbeab/00012start_START-141_B_google.com.wmv" target="_blank">[START-141_B] - 625.1 MB</a>
<a href="http://loogle.com/file/4da56zZ921f/00013start_WWE-320_google.com.mp4" target="_blank">[WWE-320] - 1.8 GB</a>

необходимо сделать так, чтобы похожие имена ссылок объеденились в одну строчку, притом, нижняя ссылка становилась справа от верхней. Объединенных ссылок может быть несколько. (две, три, пять...)
Я выделил то, что необходимо проверять.
Известно то, что объединенные ссылки в выделенной части имеют одно и тоже название до символа "_"
после символа может уже быть по разному, к примеру А, B, C или CD1, CD2, CD3 и т.д.
также известно, что квадратные скобки есть только в одном месте (рядом с выделенной частью).
еще в объединенных ссылках всегда есть символ "_" А в обычных ссылках его нету (речь идет не для всей ссылки целиком, а только для зоны в квадратных скобках, которая выделена жирным)
В конце применения БАТ не должно оставаться пустых строк.

Если применить готовый бат на вышеуказанном списке ссылок, должно получиться так:

<a href="http://loogle.com/file/acc4b05d85/00010start_VFG-181_google.com.wmv" target="_blank">[VFG-181] - 2.2 GB</a>
<a href="http://loogle.com/file/04e5zfs3e0c4e3/00011start_START-141_A_google.com.wmv" target="_blank">[START-141_A] - 854.2 MB</a> | <a href="http://loogle.com/file/a529ehgdbeab/00012start_START-141_B_google.com.wmv" target="_blank">[START-141_B] - 625.1 MB</a>
<a href="http://loogle.com/file/4da56zZ921f/00013start_WWE-320_google.com.mp4" target="_blank">[WWE-320] - 1.8 GB</a>

Alexander_88
20-03-2015, 08:13
Немножко отредактировал. Хотелось чтобы ссылки объединялись без разделителя |
т.е. просто слитно в одну строчку :(

поменял также префикс в теме на "любой язык"
но нужно то, что не требует установки, и необходимо данный файл (который получится) запустить из другого бат файла

Foreigner
20-03-2015, 10:04
PowerShell:

$content = get-content 1.txt
$groups = $content -replace '.+\[([^_]+)(\]|_.+\]).*','$1' | get-unique

foreach ($group in $groups) {

$content -match $group | foreach { $string += $_ }
$string | add-content 2.txt
$string = $null

}

Kazun
20-03-2015, 10:28
(gc 1.txt) | Group {$_.split("_",3)[1]} | % {-join $_.Group} > 2.txt

Foreigner
20-03-2015, 10:52
С Group-Object решение выглядит лаконичней, пора брать на вооружение.

Alexander_88
20-03-2015, 11:03
Спасибо всем за помощь

Foreigner вашь вариант попробовал, почему то выдается пустой 2.txt

Kazun проверил, работает


Подскажите, а как из бат файла запустить данный скрипт? что нужно прописать в бат файле, чтобы он начал выполнять скрипт, дождался его завершения, а дальше продолжил выполняться

Kazun
20-03-2015, 11:05
powershell -executionpolicy bypass -file C:\Script\script.ps1

Alexander_88
20-03-2015, 11:34
Kazun, работает, спасибо, мне уже не удобно просить... все таки потребовался разделитель между объединенными ссылками, вот такой </blockquote><blockquote>
его можно как - то встроить в существующий код?:unsure:

Kazun
20-03-2015, 11:47
(gc 1.txt) | Group {$_.split("_",3)[1]} | % {$_.Group -join "</blockquote><blockquote>"} > 2.txt

Alexander_88
20-03-2015, 12:05
Kazun работает, благодарю за помощь :)

Foreigner
20-03-2015, 12:14
вашь вариант попробовал, почему то выдается пустой 2.txt »
Наверное 4-ая powershell расслабляет, в плане синтаксиса:

$content = get-content 1.txt

$groups = $content -replace '.+\[([^_]+)(\]|_.+\]).*','$1' | get-unique

foreach ($group in $groups) {

$content | where { $_ -match $group } | foreach { $string += $_ }
$string | add-content 2.txt
$string = $null

}

Alexander_88
20-03-2015, 12:31
Foreigner, $content = get-content 1.txt $groups = $content -replace '.+\[([^_]+)(\]|_.+\]).*','$1' | get-unique foreach ($group in $groups) { $content | where { $_ -match $group } | foreach { $string += $_ } $string | add-content 2.txt $string = $null } »

опять пустой, не знаю почему, может в компьютере что то не то, хотя предыдущий (короткий код) сработал :unsure:

Foreigner
20-03-2015, 14:32
Alexander_88, Вы все в одну строку написали? Тогда конечно работать не будет.

Alexander_88
20-03-2015, 15:02
нет почему, это просто так процитировалось с форума

Alexander_88
10-05-2015, 06:02
Здравствуйте, подскажите, пожалуйста, как в таком варианте сделать объединение похожих ссылок?, по прежнему нужно объединять, если будет сходиться то, что выделено жирным, и этот ид (жирный) на сей раз начинается после первого знаком земли в ссылке, идем вправо и закончится он либо перед первым встречным знаком точки, либо первым встречным знаком земли

<a href="http://fboom.me/file/064cf3f45692b/00001bondage_DCN-047.wmv" target="_blank">00001bondage_DCN-047.wmv - 1.0 GB</a>
<a href="http://fboom.me/file/6959d25c2772b/00002bondage_CMV-049.mp4" target="_blank">00002bondage_CMV-049.mp4 - 1.2 GB</a>
<a href="http://fboom.me/file/c5596a5a160d5/00003bondage_MUSO-0059.avi" target="_blank">00003bondage_MUSO-0059.avi - 1.2 GB</a>
<a href="http://fboom.me/file/50b2abc43d59c/00004bondage_ADV-R0055.avi" target="_blank">00004bondage_ADV-R0055.avi - 1.2 GB</a>
<a href="http://fboom.me/file/1facf228d65f5/00005bondage_SVND-053.avi" target="_blank">00005bondage_SVND-053.avi - 671.5 MB</a>
<a href="http://fboom.me/file/2769106a91036/00006bondage_AKHO-111.mp4" target="_blank">00006bondage_AKHO-111.mp4 - 1.1 GB</a>
<a href="http://fboom.me/file/dc5db791bdd82/00073bondage_CEAD-035.part1.rar" target="_blank">00073bondage_CEAD-035.part1.rar - 2.0 GB</a>
<a href="http://fboom.me/file/5db4a247108b7/00073bondage_CEAD-035.part2.rar" target="_blank">00073bondage_CEAD-035.part2.rar - 1.3 GB</a>
<a href="http://fboom.me/file/4db5fc2111b2e/00074bondage_CESD-072_A.part1.rar" target="_blank">00074bondage_CESD-072_A.part1.rar - 2.0 GB</a>
<a href="http://fboom.me/file/82c5f05f64e37/00074bondage_CESD-072_A.part2.rar" target="_blank">00074bondage_CESD-072_A.part2.rar - 863.7 MB</a>
<a href="http://fboom.me/file/fe5970a3bfd84/00075bondage_CESD-072_B.part1.rar" target="_blank">00075bondage_CESD-072_B.part1.rar - 2.0 GB</a>
<a href="http://fboom.me/file/d207982281e5f/00075bondage_CESD-072_B.part2.rar" target="_blank">00075bondage_CESD-072_B.part2.rar - 862.8 MB</a>



я использовал предыдущий вариант:
(gc 1.txt) | Group {$_.split("_",3)[1]} | % {$_.Group -join "</blockquote><blockquote>"} > 2.txt

но к сожалению объединяются только ссылки, ид которых расположен между знаками земли (последние 4 ссылки)

Alexander_88
10-05-2015, 12:00
:(:(

corbis
13-05-2015, 12:03
Я не придумал ничего лучше..

(gc 1.txt) | Group {$_.split("_",3)[1]} | % {-join $_.Group} > 2.txt
(gc 2.txt) | Group {($_.split("_",3)[1]).split(".")[0]} | % {-join $_.Group} > 3.txt


Итоговый файл 3.txt




© OSzone.net 2001-2012