Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Объединение похожих ссылок (http://forum.oszone.net/showthread.php?t=297168)

Alexander_88 19-03-2015 16:26 2484782

Объединение похожих ссылок
 
Здравствуйте, я опять за помощью :)
Присутствует список ссылок в тхт файле.. пример:

Код:

<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 2484997

Немножко отредактировал. Хотелось чтобы ссылки объединялись без разделителя |
т.е. просто слитно в одну строчку :(

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

Foreigner 20-03-2015 10:04 2485049

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 2485061

Код:

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

Foreigner 20-03-2015 10:52 2485072

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

Alexander_88 20-03-2015 11:03 2485077

Спасибо всем за помощь

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

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


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

Kazun 20-03-2015 11:05 2485078

Код:

powershell -executionpolicy bypass -file C:\Script\script.ps1

Alexander_88 20-03-2015 11:34 2485090

Kazun, работает, спасибо, мне уже не удобно просить... все таки потребовался разделитель между объединенными ссылками, вот такой
Код:

</blockquote><blockquote>
его можно как - то встроить в существующий код?:unsure:

Kazun 20-03-2015 11:47 2485095

Код:

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

Alexander_88 20-03-2015 12:05 2485103

Kazun работает, благодарю за помощь :)

Foreigner 20-03-2015 12:14 2485107

Цитата:

Цитата Alexander_88
вашь вариант попробовал, почему то выдается пустой 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 2485115

Foreigner,
Цитата:

Цитата 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 2485186

Alexander_88, Вы все в одну строку написали? Тогда конечно работать не будет.

Alexander_88 20-03-2015 15:02 2485204

нет почему, это просто так процитировалось с форума

Alexander_88 10-05-2015 06:02 2505670

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

Код:

<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 2505719

:(:(

corbis 13-05-2015 12:03 2506826

Я не придумал ничего лучше..

Код:

(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


Время: 07:53.

Время: 07:53.
© OSzone.net 2001-