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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   SED 4,9 Windows (http://forum.oszone.net/showthread.php?t=354313)

DenchikK 02-10-2023 23:45 3017384

SED 4,9 Windows
 
Не могу понять, как с помощью sed под windows задавать точное соответствие. В манах вижу варианты с \b и \< , а так же с одинарными кавычками. Первые 2 варианта срабатывают и с Первый канал HD и Первый канал (+2), варианты с одинарными кавычками выдают ошибки. Так как вхождение Первый канал находится в середине строки, я не могу использовать значения начала и конца строки.
sed -i "s/\bПервый канал\b/Первый канал temp/g" test.m3u
sed -i "s/\<Первый канал\>/Первый канал temp/g" test.m3u

Serguei Kouzmine 03-10-2023 04:10 3017389

может поставьте нормальный
Код:

C:\Program Files\Git\usr\bin\sed.exe
и для того чтобы не обрабатывались оба
Первый канал HD и Первый канал (+2)


-
Код:

\bПервый канал\b
недостаточно

надо что то полсе проверять

DenchikK 03-10-2023 12:14 3017404

Цитата:

Цитата Serguei Kouzmine
может поставьте нормальный »

Ещё более нормальный, чем этот?
Цитата:

Цитата Serguei Kouzmine
надо что то полсе проверять »

Ну таки что проверять?

Foreigner 03-10-2023 13:22 3017408

Цитата:

Цитата DenchikK
Ну таки что проверять? »

Действительно непонятно, что конкретно вы хотите? Покажите кусок test.m3u?

Код:

C:\> echo "ааааа Первый канал HD ббббб Первый канал (+2)" | sed -r "s/(Первый\sканал\s)(HD)/\1temp \2/g"
"ааааа Первый канал temp HD ббббб Первый канал (+2)"

Код:

C:\> echo "ааааа Первый канал HD ббббб Первый канал (+2)" | sed -r "s/(Первый\sканал\s)(\(\+2\))/\1temp \2/g"
"ааааа Первый канал HD ббббб Первый канал temp (+2)"

PowerShell нельзя? Там это проще.

DenchikK 03-10-2023 13:49 3017412

Цитата:

Цитата Foreigner
Действительно непонятно »

Хочу с помощью sed, а не powershell или чего бы то нибыло ещё, находить точное вхождение названия канала и делать потом разные действия, неважно какие.
В плейлисте могут быть различные варианты - как я для примера написал HD или +2 - но вариантов может быть ещё множество, каждый из которых перечислять тож не хочется.
Идея находить точное соответствие. В своих поисках неоднократно встречал советы для точного соответствия использовать \b или \<, но у меня это не срабатывает - всё равно действия, которое хочется применить к конкретному названию каналу, применяются и к другим каналам, к которым применять изменения не планировалось.
Пока, чтоб находить точное соответствие использую знак конца строки, например Первый канал$ но в некоторых промежуточных обработках скриптом плейлиста имя канала становится в середине строки и тогда этот способ уже не прокатывает.

Foreigner 03-10-2023 14:14 3017415

Цитата:

Цитата DenchikK
находить точное вхождение названия канала »

Без конкретных примеров даже не знаю, что посоветовать.

Serguei Kouzmine 03-10-2023 15:36 3017426

нужно больше информации
вопрос слишком общий

Uragan66 03-10-2023 22:46 3017446

Цитата:

Цитата DenchikK
а не powershell или чего бы то нибыло ещё »

Дело конечно Ваше, но зря от PS отказываетесь... Уже не первый год любые задачи с плейлистами, да и не только, решаю с помощью powershell.
Но действительно, как ребята сказали выше, нужны конкретные примеры и больше информации.


Время: 10:12.

Время: 10:12.
© OSzone.net 2001-