Войти

Показать полную графическую версию : SED 4,9 Windows


DenchikK
02-10-2023, 23:45
Не могу понять, как с помощью 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
может поставьте нормальный
C:\Program Files\Git\usr\bin\sed.exe

и для того чтобы не обрабатывались оба
Первый канал HD и Первый канал (+2)


-
\bПервый канал\b

недостаточно

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

DenchikK
03-10-2023, 12:14
может поставьте нормальный »
Ещё более нормальный, чем этот?
https://i.ibb.co/FgZQq1q/2023-10-03-121525.png (https://ibb.co/FgZQq1q)надо что то полсе проверять »
Ну таки что проверять?

Foreigner
03-10-2023, 13:22
Ну таки что проверять? »

Действительно непонятно, что конкретно вы хотите? Покажите кусок 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
Действительно непонятно »

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

Foreigner
03-10-2023, 14:14
находить точное вхождение названия канала »

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

Serguei Kouzmine
03-10-2023, 15:36
нужно больше информации
вопрос слишком общий

Uragan66
03-10-2023, 22:46
а не powershell или чего бы то нибыло ещё »
Дело конечно Ваше, но зря от PS отказываетесь... Уже не первый год любые задачи с плейлистами, да и не только, решаю с помощью powershell.
Но действительно, как ребята сказали выше, нужны конкретные примеры и больше информации.




© OSzone.net 2001-2012