LINUX.ORG.RU

Поиск и замена SED

 ,


0

2

Хочу удалить все скрипты в файлах html не могу подобрать правильный вариант строчки

само регулярное выражение <script[\w\W]*?</script>

вот как оно смотрится в строке по моим соображениям:

find . -type f -name «*.html» -exec sed -i 's/<script[\w\W]*?</script>//g' {} \;

так же я пробовал его по всякому экранировать вплоть до:

\<script\[\\w\\W\]\*\?\<\/script\>

нифига не срабатывало

правда нашел такой вариант в интернете

find -type f -name \*.html | xargs sed -i '/\<script/,/\<\/script\>/c\ '

но он сразу всё содержимое страницы вырезает от первого скрипта до последнего, а нужно только сами скрипты удалить

Может такое сработает, а может и нет (зависит от содержимого):

find . -type f -name '*.html' -exec sed -i 's/<script[^>]*>[^<]*</script>//g' {} \;

perl умеет в non-greedy (perl -pe 's/<script[\w\W]*?<\/script>//g'), но не знаю, как его заставить обрабатывать файлы.

xaizek ★★★★★ ()