Подтвердить что ты не робот

Использовать vim для поиска по шестнадцатеричному коду

Мне нужно очистить файл. У нас есть синтаксический анализатор xml, который работает на нем, который не работает из-за escape-символа (0x1B) в файле. Как использовать vim, чтобы найти, где в файле этот символ, чтобы я мог его удалить?

Файл примера:

<?php
echo "Hello, world.\n";                           
?>

После преобразования:

0000000: 0a3c 3f70 6870 0a65 6368 6f20 2248 656c  .<?php.echo "Hel
0000010: 6c6f 2c20 776f 726c 642e 5c6e 223b 0a3f  lo, world.\n";.?
0000020: 3e0a  

Итак, я удаляю char: (в этом примере "H" )

0000000: 0a3c 3f70 6870 0a65 6368 6f20 22 656c  .<?php.echo "Hel
0000010: 6c6f 2c20 776f 726c 642e 5c6e 223b 0a3f  lo, world.\n";.?
0000020: 3e0a

Обратите внимание, что первая строка уже недостаточно широка. Когда я его конвертирую, я получаю:

^@<?php
echo "el^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@> 
4b9b3361

Ответ 1

Поиск (например, с помощью /) для \%x1b.

Вы также можете ввести управляющие символы, включая escape, в командную строку, указав перед ними Ctrl - V. Поэтому введите /, Ctrl-V, Esc, Enter.

Ответ 2

Преобразуйте vim в шестнадцатеричный редактор, выполнив [escape] :%!xxd. Затем выполните поиск 0x1B (/1B).

Ответ 3

Вы можете узнать, что такое шестнадцатеричное значение символа, наведя на него курсор и нажав "ga"

Ниже вы увидите шестнадцатеричное значение персонажа. Пример для символа <╬>

<╬> <| N> 206, Hex ce, октябрь 316, Digr I>

Удалить это с помощью:

% S/\% xce//г