2013-12-04 7 views
0

У меня есть файл myFile.xml, который Я хочу запустить команду xmllint для правильного форматирования.Замена всех вхождений непечатаемого символа в файл с использованием его значения ascii

Он содержит символ ASCII 26 (заменить символ), из-за которого команда xmllint не работает с ошибкой анализатора.

Как заменить все вхождения этого символа пустым в этот файл?

ответ

1

Следующие работали:

tr -cd '\11\12\15\40-\176' < file-with-binary-chars > clean-file 

упоминается здесь:

ascii-control-characters

+0

Вы, вероятно, следует добавить в свой ответ, что эта команда не только заменяет ASCII символ 26 (десятичное), но и каждый символ не в наборе '' \ 11 \ 12 \ 15 \ 40- \ 176'' (восьмеричный). –

+0

На самом деле это _doesn't_ удалить символ 26, так как это будет '\ 32' в восьмеричной нотации. Но дорога понятна. – Alfe

+1

@Alfe. '-c' для дополнения и' -d' для удаления. И, конечно, нет такой вещи, как символ «26», просто значение ASCII. –

0

Если вы используете bash, как об этом:

sed $'s/\x1a//g' < FILENAME | xmllint 

Это использует специальный bash обозначения $'...' который говорит bash для оценки обратной косой черты последовательности, как в \x1a должным образом.