Utilisez vim pour rechercher par code hexadécimal
Je dois nettoyer un fichier. Nous avons un analyseur xml qui s'exécute sur celui-ci qui échoue en raison d'un caractère d'échappement (0x1B) dans le fichier. Comment puis-je utiliser vim pour trouver où se trouve ce caractère dans le fichier afin de pouvoir le supprimer?
Exemple de fichier:
<?php
echo "Hello, world.n";
?>
Après conversion:
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
Donc je supprime un char: (dans cet exemple, le '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
Remarquez que la première ligne n'est plus assez large. Quand je le convertit, je reçois:
^@<?php
echo "el^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@>
2 réponses
Recherche (par exemple en utilisant /) pour \%x1b
.
Vous pouvez également taper des caractères de contrôle, y compris escape, dans la ligne de commande en les précédant avec Ctrl-V . Donc, de type /, Ctrl-V, Esc, Saisissez.
Transformer vim dans un éditeur hexadécimal en faisant [escape] :%!xxd
. Ensuite, recherchez 0x1B (/1B
).