Войти

Показать полную графическую версию : Найти одинаковые ссылки в txt и переместить их по шаблону в другой txt


Alexander_88
23-12-2023, 20:13
Здравствуйте. Подскажите можно ли такую задачу на powershell решить?..
Есть txt файл, в нем в каждой строке по две ссылки, разделенные знаком |
Нужен скрипт, который найдет одинаковые пары ссылок, и запишет их имена файлов без расширения, по специальному шаблону в другой txt файл.., а в исходном файле, строчки с этими парами одинаковых ссылок удалит.. остальное оставить без изменения..
Шаблон:
Имя файла без расширения*;

Пример. Исходный файл 1.txt

1.txt
https://k2s.cc/file/fd35e536991e/0055update.mp4 | https://k2s.cc/file/fd35e536991e/0055update.mp4
https://k2s.cc/file/e107e67247510/mod0047.mp4 | https://k2s.cc/file/wwiue107e810/mod0047.mp4
https://google.com/file/201758865_l9hs3/0050start_t.jpg | https://google.com/file/2017465f65_l9gkl3/0050start_t.jpg
https://k2s.cc/file/fd68536991e/0659upd.mp4 | https://k2s.cc/file/fd68536991e/0659upd.mp4
https://k2s.cc/file/e107e68807510/m0078.mp4 | https://k2s.cc/file/yc07e68ytro810/m0078.mp4
https://google.com/file/264758865_l9hs3/0050yyc_t.jpg | https://google.com/file/264758865_l9hs3/0050yyc_t.jpgl

После применения скрипта, файл 1.txt должен стать таким:

1.txt

https://k2s.cc/file/e107e67247510/mod0047.mp4 | https://k2s.cc/file/wwiue107e810/mod0047.mp4
https://google.com/file/201758865_l9hs3/0050start_t.jpg | https://google.com/file/2017465f65_l9gkl3/0050start_t.jpg
https://k2s.cc/file/e107e68807510/m0078.mp4 | https://k2s.cc/file/yc07e68ytro810/m0078.mp4


А также должен появиться ещё один txt файл, с именами файлов ссылок по шаблону:

2.txt
0055update*;0659upd*;0050yyc_t*;
🤔🤔🤔

DJ Mogarych
24-12-2023, 20:43
$file = "C:\temp\1.txt"
$names = "C:\temp\2.txt"

$equals = [System.Collections.ArrayList]::new()
$notEquals = [System.Collections.ArrayList]::new()
[io.file]::readalllines("$file") |% {
if (($str = $_.split(' | ') -match '\w' |group {$_ -replace '\.\w+$'})[0].Count -eq 1) {
$notEquals.add($_) > $null
}
else {
$equals.add($($str.name -replace '.*/' -replace '$','*')) > $null
}
}

$notEquals |Out-File $file -Encoding default
$equals -join ';' |Out-File $names -Encoding default

Alexander_88
25-12-2023, 07:54
DJ Mogarych, Спасибо большое, все четко работает без вопросов :up

Alexander_88
31-12-2023, 19:42
Здравствуйте ещё раз, можно ли доукомплектовать скрипт?:
Нужен скрипт, который найдет одинаковые пары ссылок, и запишет их имена файлов без расширения, по специальному шаблону в другой txt файл.., а в исходном файле, строчки с этими парами одинаковых ссылок удалит.. »

Появилась временная необходимость, добавлять имена файлов к шаблону не только, если одинаковая пара ссылок, но также, если в какой то паре ссылок, правая ссылка имеет определенный тест (к примеру пусть это будет deletelink).. я его буду менять по необходимости..
Если это возможно, подскажите, что нужно добавить в скрипт для этого?
Пс, не знал нужно ли новую тему создавать, если нужно дополнение к скрипту 🤔

Пример:
1.txt
https://k2s.cc/file/fd35e536991e/0055update.mp4 | https://k2s.cc/file/fd35e536991e/0055update.mp4
https://k2s.cc/file/e107e67247510/mod0047.mp4 | https://k2s.cc/file/wwiue107e810/mod0047.mp4
https://google.com/file/201758865_l9hs3/0050start_t.jpg | https://google.com/file/2017465f65_l9gkl3/0050start_t.jpg
https://k2s.cc/file/fd68536991e/0659upd.mp4 | https://k2s.cc/file/fd68536991e/0659upd.mp4
https://k2s.cc/file/e107e68807510/m0078.mp4 | https://k2s.cc/file/deletelink/m0078.mp4
https://google.com/file/264758865_l9hs3/0050yyc_t.jpg | https://google.com/file/264758865_l9hs3/0050yyc_t.jpg


Слово зададим deletelink
После применения скрипта, такой результат:

1.txt
https://k2s.cc/file/e107e67247510/mod0047.mp4 | https://k2s.cc/file/wwiue107e810/mod0047.mp4
https://google.com/file/201758865_l9hs3/0050start_t.jpg | https://google.com/file/2017465f65_l9gkl3/0050start_t.jpg

2.txt
0055update*;0659upd*;m0078*;0050yyc_t*;
Слово во второй ссылке (которая справа) всегда идёт между слешами.

Alexander_88
28-01-2024, 18:00
:flag:




© OSzone.net 2001-2012