Bash 字节grep对于某些字节值失败

Bash 字节grep对于某些字节值失败,bash,grep,hex,Bash,Grep,Hex,在研究gzip格式时,我试图在一个示例存档中对其神奇的字节1f 8b进行grep。我使用了答案中的手册 出于某种原因,grep找到一个字节,却找不到另一个。经过一些调查,我们盲目猜测它在设置了最高有效位的字节上失败,但是我们找不到任何合理的解释 为什么会发生这种情况?是否有解决办法?可能是因为grep正在使用UTF-8;当您搜索“\x8b”时,它将查找0xc2 0x8b。您需要找到某种方法来禁用grep的UTF-8支持,或者切换到一个将搜索条件严格解释为二进制值的工具。可能是因为您的grep可以

在研究gzip格式时,我试图在一个示例存档中对其神奇的字节1f 8b进行grep。我使用了答案中的手册

出于某种原因,grep找到一个字节,却找不到另一个。经过一些调查,我们盲目猜测它在设置了最高有效位的字节上失败,但是我们找不到任何合理的解释


为什么会发生这种情况?是否有解决办法?

可能是因为
grep
正在使用UTF-8;当您搜索“\x8b”时,它将查找0xc2 0x8b。您需要找到某种方法来禁用grep的UTF-8支持,或者切换到一个将搜索条件严格解释为二进制值的工具。

可能是因为您的
grep
可以使用UTF-8。@IgnacioVazquez Abrams Brilliant。添加LC_ALL=C有帮助。请给我一个答案,这样我就可以接受了。
$ xxd a.gz
00000000: 1f8b 0800 43dc 605b 0003 4bcb cf4f 4a2c  ....C.`[..K..OJ,
00000010: e202 0047 972c b207 0000 00              ...G.,.....
$ grep -obUaP "\x1f" a.gz
0:
$ grep -obUaP "\x8b" a.gz
# nothing is printed