Использование регулярных выражений для анализа файлов HTML или XML по существу не выполняется (см. здесь и здесь ).Такие инструменты, как sed
и awk
, чрезвычайно мощны для обработки текстовых файлов, но когда они сводятся к анализу данных со сложной структурой - таких как XML, HTML, JSON, ... - они являются не чем иным, как кувалдой.Да, вы можете выполнить работу, но иногда с огромными затратами.Для обработки таких деликатных файлов вам нужно немного больше изящества с помощью более целенаправленного набора инструментов.
В случае парсинга XML или HTML можно легко использовать xmlstarlet
.
xmlstarlet ed -d '//script'
Однако, поскольку HTML-страницы часто не являются правильно сформированным XML, может быть удобно немного его очистить, используя tidy
.В приведенном выше примере это дает:
$ tidy -q -numeric -asxhtml --show-warnings no <file.html> \
| xmlstarlet ed -N "x=http://www.w3.org/1999/xhtml" \
-d '//script'
, где -N
дает пространство имен XHTML, если оно есть, это распознается
<html xmlns="http://www.w3.org/1999/xhtml">
В выводе XHTML tidy
.