我想摆脱所有无效的角色;使用sed的
XML文件中的示例十六进制值0x1A.
什么是正则表达式和命令行?
编辑
添加了Perl标签,希望获得更多响应.我更喜欢单线解决方案.
编辑
这些是有效的XML字符
什么是正则表达式和命令行?
编辑
添加了Perl标签,希望获得更多响应.我更喜欢单线解决方案.
编辑
这些是有效的XML字符
x9 | xA | xD | [x20-xD7FF] | [xE000-xFFFD] | [x10000-x10FFFF]
解决方法
假设UTF-8 XML文档:
perl -CSDA -pe' s/[^\x9\xA\xD\x20-\x{D7FF}\x{E000}-\x{FFFD}\x{10000}-\x{10FFFF}]+//g; ' file.xml > file_fixed.xml
如果你想编码坏字节,
perl -CSDA -pe' s/([^\x9\xA\xD\x20-\x{D7FF}\x{E000}-\x{FFFD}\x{10000}-\x{10FFFF}])/ "&#".ord($1).";" /xeg; ' file.xml > file_fixed.xml
您可以通过几种不同的方式调用它:
perl -CSDA -pe'...' file.xml > file_fixed.xml perl -CSDA -i~ -pe'...' file.xml # Inplace with backup perl -CSDA -i -pe'...' file.xml # Inplace without backup