使用Bash进行文件雕刻无法使用grep查找十六进制值FFD8或FFD9

时间:2017-04-23 19:27:11

标签: linux bash grep xxd

我希望有人可以帮我解决文件刻录问题。 我想在原始格式(.dd)的图像文件中找到文件头和对应的页脚作为十六进制值。

对于其他页眉和页脚,我的脚本运行良好但不适用于JPG文件的页眉和页脚: FFD8和FFD9 以下是我目前的处理方式:

grep -obUaP" \ xFF \ xD8" image_file.dd

我希望找回搜索到的字符串页眉和页脚的帖子的偏移量,以便稍后用dd提取它们。 我将图像文件作为带有grep的二进制文件处理。

例如,当我使用此模式在图像中查找 JFIF 时,我会发现很多匹配项:

grep -obaUP" \ x4A \ x46 \ x49 \ x46" image_file.dd

但没有FFD8!

所以有人能够给我一个提示,为什么我无法找到这些简单的十六进制值?

1 个答案:

答案 0 :(得分:1)

Man grep说:

  

使用-a或设置LC_ALL ='C'会很有帮助                 环境,以便找到更多匹配,即使匹配对于直接显示是不安全的

所以,试试:

LC_ALL=C grep -obUaP "\xFF\xD9" file
脚本中的

使用上面的内容,与命令行完全相同,只需在grep命令前加上LC_ALL=C,就像上面一样。