找到二进制字符串时,删除文件中的字节

时间:2013-12-03 03:15:39

标签: string bash search ubuntu binary

所以当我遇到某个二进制字符串值时,我想删除(不是在开头或结尾,或者我会使用dd)二进制文件中的部分。即:

  • 如果找到FF FB FF FB A4,则在此处删除第二个FF FB之前的2048个字节(意味着删除第一个FF FB以及之前的2046个字节)

重复直到文件结尾。(无需测试/防止“吃掉自己”,该字符串出现之间的范围总是大于2048)

我怎么能用bash做到这一点? 提前谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用grep找到“FF FB FF FB A4”,然后使用dd剪切文件:

pos=$(grep --only-matching --byte-offset --binary --text --perl-regexp "\xFF\xFB\xFF\xFB\xA4" filename|head -1|cut -d ':' -f1)

它会告诉你字符串的位置。

dd if=filename of=output bs=1 ibs=1 count=$pos

这是领先的部分。我想你知道如何处理左派员工