nixp.ru v3.0

30 декабря 2024,
понедельник,
17:45:00 MSK

anonymous написал 26 января 2005 года в 21:52 (907 просмотров) Ведет себя неопределенно; открыл 1814 темы в форуме, оставил 5575 комментариев на сайте.

Срочно нужен скрипт для Линукс. который делает следующее: Есть html файл из него надо повырезать куски кода содержащиеся между словами <script script="» type=«text/javascript»>
. Кусков может быть несколько надо все их вырезать включая сами <SCRIPT и SCRIPT>. Помогите пожалуйста или подскажите как это сделать. Может с помощью Sed или awk. или надо посимвольно проверять весь файл на совпадение со <SCRIPT?
</script>

pzh

Для этой задачи вполне годиться awk, хотя любители perl скажут фи.

используй regex (man 7 regex), и не забудь строки склеить

anonymous

$ awk — 'BEGIN {RS=«\x00»}; {gsub (//,"»); print}' <имя_файла>

этот скрипт вырезает весь текст находящийся между самым первым <script script="» type=«text/javascript»>
. Нужно чтоб вырезался текст между каждой парой <SCRIPT SCRIPT>. Надо небось заменить /<SCRIPT.*SCRIPT>/,"» на другое рег. выражение, но я не знаю на какое.
есть такая простая констр.
awk '/<SCRIPT/,/SCRIPT>/'
которая наоборот выводит на stdout пары <SCRIPT SCRIPT> с текстом между ними. Как сделать чтоб он выводил весь файл кроме этого(того что она щас выводит)? Люди не подскажите? Может кто знает.
</script>

Genie

ну, не то, чтобы это было тривиально.

некоторая сложность в этом всё же есть.

правда, действительно, удобнее это делать на perl, как и говорилось

удалять теги (для наглядности это STYLE и SCRIPT):

cat file.html | perl -e 'while($l=){$f.=$l;}; $f=~ s~<(style|script)>(\n|.)*?</\1>~~ig; print $f;'

наоборот, оставлять:

cat file.html | perl -e 'while($l=){$f.=$l;}; $f=~ s~(<(style|script)>(\n|.)*?</\2>)~$o.="$1\n"~eig; print $o;'