Rya*_*yan 13 binary perl hex replace sed
我试图sed在二进制文件中进行替换,但我开始相信这是不可能的.基本上我想做的是类似于以下内容:
sed -bi "s/\(\xFF\xD8[[:xdigit:]]\{1,\}\xFF\xD9\)/\1/" file.jpg
Run Code Online (Sandbox Code Playgroud)
我希望实现的逻辑是:扫描二进制文件直到十六进制代码FFD8,继续读取直到FFD9,并且只保存它们之间的内容(丢弃之前和之后的垃圾,但包括FFD8并FFD9作为文件的保存部分)
有没有办法做到这一点?即使不使用sed?
编辑: 我只是在玩,并找到了最干净的方式去做IMO.我知道这个grep声明会贪婪.
hexdump -ve '1/1 "%.2x"' dirty.jpg | grep -o "ffd8.*ffd9" | xxd -r -p > clean.jpg
Run Code Online (Sandbox Code Playgroud)
Iva*_*sov 11
bbe是"sed for binary files",对于大型二进制文件而言应该比hexdumping/reconstruct更有效.
它的一个例子:
$ bbe -e 's/original/replaced/' infile > outfile
Run Code Online (Sandbox Code Playgroud)
有关手册页的更多信息.
小智 9
老问题,但是,
xxd infile | sed 's/xxxx xxxx/yyyy yyyy/' | xxd -r > outfile
Run Code Online (Sandbox Code Playgroud)
可能是最简单、最可靠的解决方案。与OP中的编辑类似。
| 归档时间: |
|
| 查看次数: |
19360 次 |
| 最近记录: |