如何grep文件中存在特定的十六进制字节?

IAm*_*aja 4 linux grep hex-editors

我的网络应用程序显示了一些奇怪的输出(不应该存在的 unicode 字符等)。我能想到的最好的方法是我在源代码中的某处引入了一个坏字符,但我不知道在哪里。

我发现这个答案表明我可以执行以下操作:

grep -obUaP "<\x-hex pattern>" .
Run Code Online (Sandbox Code Playgroud)

当我将 unicode 字符从浏览器中复制到我的Bless十六进制编辑器中时,它告诉我字符的确切字节是:

15 03 01 EF BF BD 02 02

如何格式化<\xhex pattern>以匹配我需要的确切字节。我试过:

grep -obUaP "<\x-15 03 01 EF BF BD 02 02>" .
Run Code Online (Sandbox Code Playgroud)

但这不起作用。想法?

cha*_*lls 5

再次检查帖子。FrOsT 在他的实际 grep 命令中不包括“<”和“>”。他只用克拉来附上一个示例语句。他的实际陈述是这样的:

"\x01\x02"
Run Code Online (Sandbox Code Playgroud)

不是:

"<\x01\x02>"
Run Code Online (Sandbox Code Playgroud)

我的计算机上有一个以以下行开头的 C 源文件:

#include <stdio.h>
Run Code Online (Sandbox Code Playgroud)

当我跑

grep -obUaP '\x69\x6E\x63\x6C\x75\x64\x65' io.c
Run Code Online (Sandbox Code Playgroud)

我得到

1:include
Run Code Online (Sandbox Code Playgroud)

也就是说,行号后跟匹配模式的字符串。

你可能想跑

man grep
Run Code Online (Sandbox Code Playgroud)

并找出所有这些选项的含义。