我有一系列由 bash 脚本组成的文件,最后连接了一个 gzip 文件。
我想要一种剥离前导 bash 的方法,留下一个纯 gzip 文件。
我想出的方法是:
- 对文件进行十六进制转储;
- 用于
sed
删除 gzip 幻数之前的所有内容1f 8b
; - 将剩余的十六进制转储转换回二进制。
IE
xxd -c1 -p input | tr "\n" " " | sed 's/^.*?1f 8b/1f 8b' | xxd -r -p > output
乍一看,这似乎工作正常。但是,如果文件的 gzip 部分碰巧包含1f 8b
除了初始标头之外的字节序列,它就会崩溃。在这些情况下,它会删除最后一次出现之前的所有内容。
我最初的尝试是否在正确的轨道上,我能做些什么来解决它?或者有没有更好的方法来做到这一点,我错过了?