Gebruik vim om te zoeken op hexadecimale code

Ik moet een bestand opschonen. We hebben een XML-parser die erop draait en die faalt vanwege een escape-teken (0x1B) in het bestand. Hoe kan ik vim gebruiken om te vinden waar in het bestand dat teken is, zodat ik het kan verwijderen?

Voorbeeldbestand:

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

Na conversie:

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  

Dus ik verwijder een char: (in dit voorbeeld de ‘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

Merk op dat de eerste regel niet breed genoeg meer is. Als ik het terug converteer, krijg ik:

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

Antwoord 1, autoriteit 100%

Zoek (bijv. met /) voor \%x1b.

Je kunt ook besturingstekens typen, inclusief escape, in de opdrachtregel door ze vooraf te laten gaan met CtrlV. Typ dus /, Ctrl-V, Esc, Enter.


Antwoord 2, autoriteit 18%

Verander vim in een hex-editor door [escape] :%!xxdte doen. Zoek vervolgens naar 0x1B (/1B).


Antwoord 3, autoriteit 4%

Je kunt ontdekken wat een hexadecimale waarde van een teken is door de cursor erop te plaatsen en op ga

te drukken

Hieronder ziet u een hexadecimale waarde van het teken. Voorbeeld voor een <╬>teken

<╬> <|N> 206, Hex ce, okt 316, Digr I>

Verwijder het door:

%s/\%xce//g 

Other episodes