Удалите символы не UTF-8 из файла XML, используя sed

Данный XML-файл с UTF-8, объявленным как кодировка, не проходит xmllint, Предполагая, что не символ UTF-8 вызывает ошибку, следующее sed команда запускается против файла. sed 's/[^\x00-\x7F]//g' file.xml, Либо команда неверна, либо не символы UTF-8 не являются проблемой, так как xmllint по-прежнему не удается после запуска sed, Первый вопрос: sed регулярные выражения выглядят правильно?

= = = = =

Вот вывод xmllint: $ xmllint file.xml file.xml:35533: parser error : CData section not finished <p class="imgcont"><img alt="Diets of 2013" src="h <b>What You Eat: </b>Foods low in sugar and carbs and high in fat—80% of cal ^ file.xml:35533: parser error : PCDATA invalid Char value 31 <b>What You Eat: </b>Foods low in sugar and carbs and high in fat—80% of cal ^ file.xml:35588: parser error : Sequence ']]>' not allowed in content as.people.com/2013/11/07/kerry-washington-pregnant-diet-green-smoothie-recipe/"] ^

= = = = =

ОБНОВЛЕНИЕ: В TextMate, при просмотре файла, есть символ, который отображается как <US>, Если этот символ вручную удален из файла, файл затем проходит xmllint,

0 ответов

С чем-то сложно работать sed для удаления определенных кодовых точек из таблицы Unicode.

Если вам нужно настроить таргетинг на определенные категории символов Unicode, имеет смысл работать с Perl.

perl -pe -i 's/(?![\t\n\r])\p{Cc}//g' file

удалит все управляющие символы, кроме TAB, CR и LF.

Другие вопросы по тегам