使用vim按十六进制代码搜索

发布于 2024-08-21 18:42:49 字数 710 浏览 5 评论 0原文

我需要清理一个文件。我们有一个在其上运行的 xml 解析器,由于文件中的转义字符 (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  

所以我删除了一个字符:(在本例中为“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^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@> 

I need to clean up a file. We have an xml parser that runs on it that is failing due to an escape character (0x1B) in the file. How do I use vim to find where in the file that character is so I can remove it?

Example file:

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

After 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  

So I delete a char: (in this example, the '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

Notice how the first line isn't wide enough anymore. When I convert it back, I get:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

遇见了你 2024-08-28 18:42:49

搜索(例如使用/\%x1b

您还可以在命令行中键入控制字符(包括转义字符),方法是在控制字符前面加上 Ctrl-V。因此,请输入 /Ctrl-VEscEnter

Search (e.g. using /) for \%x1b.

You can also type control characters, including escape, into the command line by preceding them with Ctrl-V. So type /, Ctrl-V, Esc, Enter.

幸福不弃 2024-08-28 18:42:49

通过执行 [escape] :%!xxd 将 vim 转换为十六进制编辑器。然后搜索 0x1B (/1B)。

Transform vim into a hex editor by doing [escape] :%!xxd. Then search for 0x1B (/1B).

天暗了我发光 2024-08-28 18:42:49

您可以通过将光标放在字符上并按 ga 来了解该字符的十六进制值。

下面您将看到该字符的十六进制值。 <╬> 字符的示例

<╬> <|N> 206,Hex ce,316 年 10 月,Digr I>

通过以下方式删除它:

%s/\%xce//g 

You can discover what a hex value of a character by putting the cursor on it and pressing ga

Below you will see a hex value of the character. Example for a <╬> character

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

Delete it by :

%s/\%xce//g 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文