【发布时间】:2023-12-14 02:31:02
【问题描述】:
我有一个包含多个 jpeg 的文件。所以我想将它们拆分为单个 jpeg。
简单的部分是找到开头:0xFF0xD8 0xFF0xE1 标记 JPG 和 EXIF 数据字段的开头,在我的情况下,它总是在开头。
所以我找到了这个 awk 命令:
awk '/string/{n++}{print >"out" n ".txt" }' final.txt
分割文件。当我将它与十六进制一起使用时,它不能按预期工作:
awk '/0xFF0xD8 0xFF0xE1/{n++}{print >"out" n ".txt" }' final.txt
awk 的文档说前面有 0x 的所有字符串都用作十六进制,但我似乎效果不佳..
编辑:好吧,我发现了这个:https://superuser.com/questions/174362/how-to-split-binary-file-based-on-pattern 但它对我不起作用...它应该创建 2 个文件,但只创建一个文件,并且它只有 11 个字节大
【问题讨论】:
-
0x是十六进制值的文本表示的开头。但如果你的文件是二进制文件,你就找不到了。 -
JFIF 是否保证在其他任何地方都没有这个序列?
-
不,我没有,但我可以在搜索序列中添加更多字节,这足以完成我的任务
-
我认为第一个字节应该是
FF D8 FF E0 -
awk 的文档说前面带 \0x 的所有字符串都使用十六进制。