Удалите символы не 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.