Показать полную графическую версию : [решено] Удаление дубликатов строк из текстового файла со сравнением по две строки
Uragan66
24-08-2019, 18:00
DJ Mogarych, так не пойдёт для нескольких файлов, сам скрипт написан для обработки только одного файла. Нужно его изменить на multiple, только, увы, я не знаю как.
так не пойдёт для нескольких файлов »
оформите весь код в функцию и считывайте файлы по одному с вызовом функции...
function set-outfile {
process{
$file = 'out_'+$_.name
@(for($i, $arr = 0, (gc $_.fullname -Encoding utf8); $i -lt $arr.Length;) {
$a, $b = $arr[$i], $arr[$i + 1] # потенциальная пара
# критерий относительно которого формируется пара
if ($a.StartsWith('#EXTINF') -and $b -match ':\/\/') {
# выводим пару в окно хоста
"$a`n$b"
# переходим на две позиции вперед
$i += 2
} else {
# в противном случае переходим к следующему значению
++$i
continue
}
}) | Sort-Object -Unique | Out-File $file -Encoding utf8
}
}
dir .\каталог\* -inc *.m3u -file|set-outfile
Uragan66
24-08-2019, 21:09
YuS_2, спасибо большое. Это то, что нужно.
Alex2010god
02-08-2020, 13:18
Привет!Что то пошло не так,помогите пожалуйста понять,на скриншоте во вложении все видно.
Alex2010god, у вас старая версия PowerShell, скрипт использует новые возможности. Обновите PoSh до 5.1
Alex2010god
02-08-2020, 20:38
Установил 5.1 никаких изменений кроме того что пропал русский язык(как вернуть рус.яз на место?)
никаких изменений »
Напротив. Теперь совсем другая ошибка.
В том каталоге, откуда Вы пытаетесь исполнять код (на Вашем скриншоте это каталог профиля текущего пользователя), отсутствует каталог с именем «каталог».
Alex2010god
03-08-2020, 07:47
Благодарю!Далек от программирования - ничего не понял из Вашего ответа(что нужно сделать что бы каталог появился?)...
Как вернуть русский язык для PowerShell 5.1?
ничего не понял из Вашего ответа(что нужно сделать что бы каталог появился?)... »
необходимо вместо .\каталог указать правильный путь к существующему каталогу, в котором находятся файлы для обработки.
Как вернуть русский язык для PowerShell 5.1? »
Никак... ну или пожаловаться в ООН на микрософт, на ущемление прав русскоязычных пользователей :) ... шутка.
Alex2010god
04-08-2020, 09:25
В начале скрипта указан адрес:
$aContent = Get-Content -Path 'D:\1\FILMOTEKA.M.C+\F.m3u'
просто вписать вместо .\каталог
так .\D:\1\FILMOTEKA.M.C+\F.m3u
или еще как ни будь?
В начале скрипта указан адрес: »
Хмм... на кофейной гуще не гадаю. :)
Где это видно?
Покажите полностью, что Вы запускаете, какая при этом возникает ошибка и главное - что в итоге желаете получить.
А применительно к указанному выше скрипту:
function set-outfile {
process{
$file = 'out_'+$_.name
@(for($i, $arr = 0, (gc $_.fullname -Encoding utf8); $i -lt $arr.Length;) {
$a, $b = $arr[$i], $arr[$i + 1] # потенциальная пара
# критерий относительно которого формируется пара
if ($a.StartsWith('#EXTINF') -and $b -match ':\/\/') {
# выводим пару в окно хоста
"$a`n$b"
# переходим на две позиции вперед
$i += 2
} else {
# в противном случае переходим к следующему значению
++$i
continue
}
}) | Sort-Object -Unique | Out-File $file -Encoding utf8
}
}
$fld = 'D:\1\FILMOTEKA.M.C+\*'
dir $fld -inc *.m3u -file|set-outfile
путь можно указывать как относительный, так и абсолютный. Переменная $fld будет содержать тот путь, который Вы укажете и соответственно, от его правильности будет зависеть успешное выполнение скрипта.
Alex2010god
07-08-2020, 20:08
Так все же видно на скриншотах(опубликованных ранее в теме,ничего не менял кроме версии ПоверШелл).
Так все же видно на скриншотах »
1. Забудьте про эту гадость, в смысле про Powershell ISE, запускайте скрипты в консоли или используйте VS Code...
2. Скрипт лучше показывать в текстовом виде, а не скриншотами...
3. В начале скрипта указан адрес:
$aContent = Get-Content -Path 'D:\1\FILMOTEKA.M.C+\F.m3u' »
Это никакой не адрес, это считывание данных из файла и их запись в переменную... которая нигде более не используется.
4. и главное - что в итоге желаете получить. »
? На скриншоте никакого вопроса не видно :)
Foreigner
07-08-2020, 20:47
Если нужны уникальные пары строк, то лучше наверное:
Get-Content 1.m3u -ReadCount 2 | Sort-Object | Get-Unique
Если нужны уникальные пары строк, то лучше наверное: »
здесь не просто уникальные пары нужны были, тут учитываются ошибочно составленные плейлисты и код, предложенный greg zakharov выправляет их, он просто завернут в функцию, которая обрабатывает несколько файлов сразу из определенного каталога ... в общем, выше по топику всё есть.
Alex2010god
08-08-2020, 00:53
Для меня темный лес,ну попытался и не получилось(зря только версию на русском языке "ПоверШелл" сменил на английскую).
Цель была такова - обработать плейлист IPTV и выявить и удалить дубликаты.
Проще было бы батник скрипта сделать(положил в папку с плейлистом,нажал он сам все сделал и выдал готовый плейлист с тем же именем+цифра 01,последующий обработанный плейлист 02 и Т.Д.)
На просторах "паутины" нашел программу - без оболочки которая все это делает в один клик(искал неделю или две).
Цель была такова - обработать плейлист IPTV и выявить и удалить дубликаты. »
Создание скрипта, правильно решающего задачу, зависит от правильного составления условий той задачи...
Здесь существует несколько если:
Если плейлист составлен верно и в нем нет ошибок, описанных выше,
Если в плейлисте отсутствуют "лишние" строки, как-то, например маркер плейлиста (#EXTM3U) и т.п.,
Если цель - исключительно только удалить дублирующиеся ПАРЫ строк,
то для одного файла, достаточно запустить такой скрипт:
http://forum.oszone.net/post-2877089.html#post2877089
# Здесь в одинарных кавычках необходимо указать свои: путь к файлу и наименование файла
$file = gi 'd:\исходный каталог\исходный файл.m3u'
# Формируем имя выходного файла:
$out = $file.directoryname + $file.basename + '_out' + $file.extension
# Удаляем дубликаты пар строк с одновременной сортировкой:
gc $file -r 2|sort -uni|out-file $out -enc utf8
Но, если необходима обработка в определенном каталоге всех файлов, в которых, как правило, как минимум, в наличии маркер плейлиста, то:
function delete-marker {
process{
$file = $_.fullname
if (($a = gc $_.fullname -enc utf8)[0] -match '^#EXTM3U'){
$a[1..$a.length]|out-file $file -enc utf8
}
}
}
function set-outfile {
process{
$out = $_.directoryname + '\' + $_.basename + '_out' + $_.extension
# Удаляем дубликаты пар строк с одновременной сортировкой
gc $_.fullname -r 2 -enc utf8|sort -uni|out-file $out -enc utf8
}
}
# Путь к каталогу с исходными файлами (астериск * - указывать обязательно):
$fld = 'D:\1\FILMOTEKA.M.C+\*'
# Сначала удаляем маркеры плейлиста из файлов:
$arr = dir $fld -inc '*.m3u','*.m3u8' -file|delete-marker
# Далее, вызов функции обработки файлов:
$arr|set-outfile
- но надо учитывать, что плейлисты не всегда составлены верно, где помимо маркера плейлиста могут присутствовать ошибки описанные выше, а кроме того, могут присутствовать и дополнительные теги, например #PLAYLIST или #EXTGRP и т.п. - этот скрипт такие моменты не учитывает и отработает ошибочно на таких плейлистах.
В общем, это уже другая задача, под которую необходимо составить перечень условий, т.е. вычленить все возможные "лишние" теги, которые надо либо удалить, либо просто добавить в строку, например (#EXTINF:-1 group-title="Общие",Евроновости), которая изначально может быть представлена так:
#EXTINF:-1 ,Евроновости
#EXTGRP:Общие
http://evronovosti.mediacdn.ru/sr1/evronovosti/playlist.m3u8
- Нюансов там много и чтобы получить в итоге то, что хотелось бы, придется немного потрудиться и составить таки условия... а здесь Вам могут помочь решить задачу с определенными условиями, но не заниматься экстрасенсорикой в плане того, какие там ещё могут быть подводные течения в тех плейлистах... так что сорри, если что не так. :)
Проще было бы батник скрипта сделать »
Если Вам кажется, что это проще - сделайте, но боюсь, что при углублении в тему, Вы будете разочарованы в возможностях командной строки cmd при работе с текстом... :)
#EXTINF:0, 1+1
http://193.106.211.2:1234/udp/225.1.1.103:4001
#EXTINF:0, ICTV
http://193.106.211.2:1234/udp/225.1.1.104:4001
#EXTINF:0, 5 канал
http://193.106.211.2:1234/udp/225.1.1.105:4001
#EXTINF:0, СТБ
http://193.106.211.2:1234/udp/225.1.1.106:4001
#EXTINF:0, ТРК «Украина»
http://193.106.211.2:1234/udp/225.1.1.107:4001
#EXTINF:0, Сити
http://193.106.211.2:1234/udp/225.1.1.108:4001
#EXTINF:0, Тонис
http://193.106.211.2:1234/udp/225.1.1.111:4001
#EXTINF:0, ТЕТ
http://193.106.211.2:1234/udp/225.1.1.110:4001
#EXTINF:0, ТРК «Киев»
http://193.106.211.2:1234/udp/225.1.1.114:4001
#EXTINF:0, Тонис
http://193.106.211.2:1234/udp/225.1.1.111:4001
#EXTINF:0, Мега
http://193.106.211.2:1234/udp/225.1.1.112:4001
#EXTINF:0, М1
http://193.106.211.2:1234/udp/225.1.1.113:4001
#EXTINF:0, канал «Киев»
http://193.106.211.2:1234/udp/225.1.1.114:4001
#EXTINF:0, 2+2
http://193.106.211.2:1234/udp/225.1.1.115:4001
#EXTINF:0, ТРК «Украина»
http://190.106.210.2:1234/udp/225.1.1.107:4001 »
#EXTINF:-1 ,Первый канал
http://gorod.tv/s/live/1/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Россия 1
http://gorod.tv/s/live/2/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Матч ТВ
http://gorod.tv/s/live/3/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,НТВ
http://gorod.tv/s/live/4/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Пятый канал
http://gorod.tv/s/live/5/46.252.219.59/1561632042766/0.m3u8
Здесь какая-то информация
http://gorod.tv/s/live/1/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Пятый канал
#EXTINF:-1 ,Россия К
http://gorod.tv/s/live/6/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 , Москва 24
http://91.231.219.145:80/tv_moscow_24/video.m3u8
#EXTINF:-1 , Санкт-Петербург
http://91.231.219.145:80/tv_sankt_peterburg/video.m3u8
https://smarttvnews.ru/wp-content/uploads/2018/11/BT-2016-logo_color7890.png
https://smarttvnews.ru/wp-content/uploads/2018/11/BT-2016-logo_color7890.png
#EXTINF:-1 ,Discovery
http://hls-v3-spbtv.msk.spbtv.com/for_spb/msk/ipv3/154.m3u8
#EXTINF:-1 ,NASA TV
http://hls-v3-spbtv.msk.spbtv.com/for_spb/msk/ipv3/17.m3u8
#EXTINF:-1 ,Россия 24
http://gorod.tv/s/live/7/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Карусель
http://gorod.tv/s/live/8/46.252.219.59/1561632042766/0.m3u8 »
Не особо вчитывался в чем тут у вас загвоздка, но вроде как все решается одной строкой.
Код на скорую руку. С задачей, как я понимаю, справляется.
param(
$pathIN = "C:\files\list.txt",
$pathOUT = "C:\files\list_new.txt"
)cls
$List=((gc $pathIN -raw)|sls "#E[^#]+?(?<=://.+)(?=(`r|$))" -a).Matches.Value|sort -u
$List|out-file $pathOUT
Результат:
#EXTINF:0, 1+1
http://193.106.211.2:1234/udp/225.1.1.103:4001
#EXTINF:0, 2+2
http://193.106.211.2:1234/udp/225.1.1.115:4001
#EXTINF:0, 5 канал
http://193.106.211.2:1234/udp/225.1.1.105:4001
#EXTINF:0, ICTV
http://193.106.211.2:1234/udp/225.1.1.104:4001
#EXTINF:0, канал «Киев»
http://193.106.211.2:1234/udp/225.1.1.114:4001
#EXTINF:0, М1
http://193.106.211.2:1234/udp/225.1.1.113:4001
#EXTINF:0, Мега
http://193.106.211.2:1234/udp/225.1.1.112:4001
#EXTINF:0, Сити
http://193.106.211.2:1234/udp/225.1.1.108:4001
#EXTINF:0, СТБ
http://193.106.211.2:1234/udp/225.1.1.106:4001
#EXTINF:0, ТЕТ
http://193.106.211.2:1234/udp/225.1.1.110:4001
#EXTINF:0, Тонис
http://193.106.211.2:1234/udp/225.1.1.111:4001
#EXTINF:0, ТРК «Киев»
http://193.106.211.2:1234/udp/225.1.1.114:4001
#EXTINF:0, ТРК «Украина»
http://190.106.210.2:1234/udp/225.1.1.107:4001
#EXTINF:0, ТРК «Украина»
http://193.106.211.2:1234/udp/225.1.1.107:4001
#EXTINF:-1 , Москва 24
http://91.231.219.145:80/tv_moscow_24/video.m3u8
#EXTINF:-1 , Санкт-Петербург
http://91.231.219.145:80/tv_sankt_peterburg/video.m3u8
#EXTINF:-1 ,Discovery
http://hls-v3-spbtv.msk.spbtv.com/for_spb/msk/ipv3/154.m3u8
#EXTINF:-1 ,NASA TV
http://hls-v3-spbtv.msk.spbtv.com/for_spb/msk/ipv3/17.m3u8
#EXTINF:-1 ,Карусель
http://gorod.tv/s/live/8/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Матч ТВ
http://gorod.tv/s/live/3/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,НТВ
http://gorod.tv/s/live/4/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Первый канал
http://gorod.tv/s/live/1/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Пятый канал
http://gorod.tv/s/live/5/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Россия 1
http://gorod.tv/s/live/2/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Россия 24
http://gorod.tv/s/live/7/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Россия К
http://gorod.tv/s/live/6/46.252.219.59/1561632042766/0.m3u8
Такой ведь нужен?
Не особо вчитывался в чем тут у вас загвоздка »
А зря... после такого подхода, весь интернет пестрит кривыми плейлистами IPTV и зачастую, тысяч по 20-50 парных строк в них... увы. :)
А если проверить ещё и названия каналов на соответствие того, что в ссылках... там вообще мрак...
С задачей, как я понимаю, справляется. »
#EXTM3U
#EXTINF:-1 ,0 - FREE-IPTV
/$USB_DIR/sda1/free_ip.m3u
#EXTINF:-1 ,Первый канал
#EXTGRP:Российские
http://gorod.tv/s/live/1/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Россия 1
http://gorod.tv/s/live/2/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Матч ТВ
http://gorod.tv/s/live/3/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,НТВ
http://gorod.tv/s/live/4/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Пятый канал
http://gorod.tv/s/live/5/46.252.219.59/1561632042766/0.m3u8
Здесь какая-то информация
http://gorod.tv/s/live/1/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Пятый канал
#EXTINF:-1 ,Россия К
#EXTGRP:Российские
http://gorod.tv/s/live/6/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Москва 24
http://91.231.219.145:80/tv_moscow_24/video.m3u8
#EXTINF:-1 ,Санкт-Петербург
http://91.231.219.145:80/tv_sankt_peterburg/video.m3u8
https://smarttvnews.ru/wp-content/uploads/2018/11/BT-2016-logo_color7890.png
https://smarttvnews.ru/wp-content/uploads/2018/11/BT-2016-logo_color7890.png
#EXTINF:-1 ,Discovery
http://hls-v3-spbtv.msk.spbtv.com/for_spb/msk/ipv3/154.m3u8
#EXTINF:-1 ,NASA TV
http://hls-v3-spbtv.msk.spbtv.com/for_spb/msk/ipv3/17.m3u8
#EXTINF:-1 ,Россия 24
http://gorod.tv/s/live/7/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Карусель
http://gorod.tv/s/live/8/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Первый канал
#EXTGRP:Российские
http://gorod.tv/s/live/1/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Россия 1
http://gorod.tv/s/live/2/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Матч ТВ
http://gorod.tv/s/live/3/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,НТВ
http://gorod.tv/s/live/4/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Пятый канал
http://gorod.tv/s/live/5/46.252.219.59/1561632042766/0.m3u8
Здесь какая-то информация
http://gorod.tv/s/live/1/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Пятый канал
#EXTINF:-1 ,Россия К
#EXTGRP:Российские
http://gorod.tv/s/live/6/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Москва 24
http://91.231.219.145:80/tv_moscow_24/video.m3u8
#EXTINF:-1 ,Санкт-Петербург
http://91.231.219.145:80/tv_sankt_peterburg/video.m3u8
https://smarttvnews.ru/wp-content/uploads/2018/11/BT-2016-logo_color7890.png
https://smarttvnews.ru/wp-content/uploads/2018/11/BT-2016-logo_color7890.png
#EXTINF:-1 ,Discovery
http://hls-v3-spbtv.msk.spbtv.com/for_spb/msk/ipv3/154.m3u8
#EXTINF:-1 ,NASA TV
http://hls-v3-spbtv.msk.spbtv.com/for_spb/msk/ipv3/17.m3u8
#EXTINF:-1 ,Россия 24
http://gorod.tv/s/live/7/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Карусель
http://gorod.tv/s/live/8/46.252.219.59/1561632042766/0.m3u8
Должно получится примерно это:
#EXTINF:-1 ,0 - FREE-IPTV
/$USB_DIR/sda1/free_ip.m3u
#EXTINF:-1 ,Discovery
http://hls-v3-spbtv.msk.spbtv.com/for_spb/msk/ipv3/154.m3u8
#EXTINF:-1 ,NASA TV
http://hls-v3-spbtv.msk.spbtv.com/for_spb/msk/ipv3/17.m3u8
#EXTINF:-1 ,Карусель
http://gorod.tv/s/live/8/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Матч ТВ
http://gorod.tv/s/live/3/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Москва 24
http://91.231.219.145:80/tv_moscow_24/video.m3u8
#EXTINF:-1 ,НТВ
http://gorod.tv/s/live/4/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Пятый канал
http://gorod.tv/s/live/5/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Россия 1
http://gorod.tv/s/live/2/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Россия 24
http://gorod.tv/s/live/7/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 ,Санкт-Петербург
http://91.231.219.145:80/tv_sankt_peterburg/video.m3u8
#EXTINF:-1 group-title="Российские",Первый канал
http://gorod.tv/s/live/1/46.252.219.59/1561632042766/0.m3u8
#EXTINF:-1 group-title="Российские",Россия К
http://gorod.tv/s/live/6/46.252.219.59/1561632042766/0.m3u8
param (
# Создаем три каталога для работы (в каждом будут находится плейлисты)
# Путь к каталогу с исходными файлами:
[string]$infolder = 'D:\in',
# Путь к каталогу с промежуточными файлами, т.е. исправленные плейлисты с возможными дубликатами:
[string]$workfolder = 'D:\work',
# Путь к каталогу с целевыми файлами без дубликатов:
[string]$outfolder = 'D:\out',
# Фильтр для отбора файлов:
[string[]]$filter = ('*.m3u','*.m3u8')
)
function set-groupchannel {
# Выправляем кривые плейлисты. Всё лишнее будет удалено, только группы #EXTGRP добавляются в строку #EXTINF
process{
$arr = new-object system.collections.generic.list[system.string]
$fout = $fldwrk.fullname + '\' + $_.name
gc $_.fullname -enc utf8|%{
if($_ -match '^#extgrp'){
$rep = $_ -replace '#extgrp:'
if ($arr.length -gt 0){
if ($arr[-1] -match '^#extinf' -and $arr[-1] -notmatch 'group-title'){
$arr[-1] = $arr[-1] -replace '(?<=#extinf:\s*-?\d+)([^,]*),'," group-title=`"$rep`"$1,"
}
}
} elseif ($_ -match '^#extinf') {
if ($arr.length -gt 0){
if($arr[-1] -match '^#extinf'){
$arr[-1] = $_
} else {$arr.add($_)}
} else {$arr.add($_)}
} elseif ($_ -notmatch '^#'){
if($arr.length -gt 0){
if($arr[-1] -match '^#extinf'){
$arr.add($_)
}
}
}
}
$arr|out-file $fout -enc utf8
}
}
function set-outfile {
# Удаляем дубликаты пар строк с одновременной сортировкой этих пар
process{
$out = $fldout.fullname + '\' + $_.name
gc $_.fullname -r 2 -enc utf8|sort -uni|out-file $out -enc utf8
}
}
if (!(test-path $workfolder)){md $workfolder}
if (!(test-path $outfolder)){md $outfolder}
$fldin = gi $infolder
$fldwrk = gi $workfolder
$fldout = gi $outfolder
# Исправляем плейлисты:
dir ($fldin.fullname + '\*') -inc $filter -file|set-groupchannel
# Удаляем дубликаты и сортируем:
dir ($fldwrk.fullname + '\*') -inc $filter -file|set-outfile
плейлистами IPTV »
Я, честно говоря, даже не знаю что это такое)
У всех интернет-провайдеров же цифровое тв практически бесплатно, так что не довелось столкнуться с iptv.
Минимально встречавшиеся кривости (далеко не все возможные, наверное) »
Тут тоже самое, только еще какой-то #EXTGRP появился. Можно и его наличие учесть:
param(
$pathIN = "C:\files\list.txt",
$pathOUT = "C:\files\list_new.txt"
)cls
$List=((Get-Content $pathIN -raw) -replace "(`r`n#EXTGRP:)((?<=#EXTGRP:)[^`r]+)" , ' ($2)'|
sls "#E[^#]+?(\.m3u.?|:\d{4})(?=`r|$)"-A).Matches.Value|sort {($_-split"`r`n")[1]} -u
$List|out-file $pathOUTТеперь работает для всех трех примеров.
В общем интересно было поискать уникальные пары, а в самих плейлистах не шарю)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.