ворос атцам sed'a
а чем такой вариант не устраивает?
зы я не отец sed'а
serd:~$ echo 'href="aaa?bbb&ccc$ddd=eee.html"' | sed {'s/[?=&$]/_/g'}
href_"aaa_bbb_ccc_ddd_eee.html"
зы я не отец sed'а

нужно сделать замену только внутри конструкции href="..."
и как-нить покороче
и как-нить покороче
Потому что ".*" из второй скобки съедает всё. Вплоть до ".html".
Тебе надо повторять твою подстановку, пока строка подходит под образец.
О последнем прочитаешь сам.
---
...Я работаю...
Тебе надо повторять твою подстановку, пока строка подходит под образец.
О последнем прочитаешь сам.
---
...Я работаю...
$ echo 'href="aaa?bbb&ccc$ddd=eee.html"' | sed {': start; s/\(href="[^?=&$]*\)[?=&$]\(.*\.html"\)/\1_\2/g; t start;'}
href="aaa_bbb_ccc_ddd_eee.html"
Работает только с погнутым sed, для переносимости надо писать:
---
...Я работаю...
sed -e '{' -e ': start;' -e 's/\(href="[^?=&$]*\)[?=&$]\(.*\.html"\)/\1_\2/g;' -e 't start;' -e '}'
---
...Я работаю...
угу
и я еще не учел что он жадный
нужно так
и я еще не учел что он жадный
нужно так
sed {': start; s/\(href="[^"]*\)[?=&$]\([^"]*\.html"\)/\1_\2/; t start;'}
а «*?» твой сед не берёт?
это перловская фишка
Оставить комментарий
spensnp
почемуделает только одну замену, хотя указан параметр g?
как добиться чтобы он заменил все символы "?=&$" за один проход?