File 使用ascii值替换文件中所有出现的不可打印字符

File 使用ascii值替换文件中所有出现的不可打印字符,file,unix,replace,character,non-printing-characters,File,Unix,Replace,Character,Non Printing Characters,我有一个文件myFile.xml 我想在上运行xmllint命令以获得正确的格式设置 它包含ASCII字符26(替换字符),因为xmllint命令因解析器错误而失败 如何将此文件中出现的所有字符替换为空字符?如果您使用的是bash,如何: sed $'s/\x1a//g' < FILENAME | xmllint sed$'s/\x1a//g'

我有一个文件
myFile.xml
我想在上运行
xmllint
命令以获得正确的格式设置

它包含ASCII字符26(替换字符),因为
xmllint
命令因解析器错误而失败


如何将此文件中出现的所有字符替换为空字符?

如果您使用的是
bash
,如何:

sed $'s/\x1a//g' < FILENAME | xmllint
sed$'s/\x1a//g'
这使用了特殊的
bash
符号
$'…'
,它告诉
bash
正确地计算像
\x1a
这样的反斜杠序列

以下措施奏效了:

tr -cd '\11\12\15\40-\176' < file-with-binary-chars > clean-file
tr-cd'\11\12\15\40-\176'clean file
从这里提到:


您可能应该在回答中添加以下内容:该命令不仅替换ASCII字符26(十进制),而且还替换集合
'\11\12\15\40-\176'
(八进制)中的所有字符。实际上,它不会删除字符26,因为这将是八进制表示法中的
\32
。但是路是畅通的。@Alfe确实如此。
-c
表示补码,
-d
表示删除。当然,这里没有
26
字符,只有ASCII值。