Поиск и замена Sed Grep

C
На сайте с 15.07.2015
Offline
27
391

Хочу удалить все скрипты в файлах 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\ '

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

Может как-то через grep получится?

HM
На сайте с 14.01.2012
Offline
210
#1

Найти в текущей директории все файлы, заканчивающиеся на .html и удалить в них теги script вместе с содержимым:

find . -type f -name "*.html" -exec perl -i -pe 's|<script>.*</script>||' {} \;
но оно не сработает для script в разных строках.

Поэтому окончательный вариант (отсюда):

find . -type f -name "*.html" -exec perl -0 -i -pe 's/<script.*?script>//gs' {} \;
C
На сайте с 15.07.2015
Offline
27
#2
hakuna matata:
Найти в текущей директории все файлы, заканчивающиеся на .html и удалить в них теги script вместе с содержимым:
find . -type f -name "*.html" -exec perl -i -pe 's|<script>.*</script>||' {} \;
но оно не сработает для script в разных строках.

Поэтому окончательный вариант (отсюда):
find . -type f -name "*.html" -exec perl -0 -i -pe 's/<script.*?script>//gs' {} \;

Отличное решение! Искал ответ по всяким линксойдовским форумам. ребята там предлагали создать чуть ли не свою операционную систему.

Короче красава!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий