在另一个二进制文件中找

时间:2018-01-04 18:55:09

标签: bash grep dd

我有两个二进制文件(dd图像),一个巨大的(大约1 GB)和一个小的(几个MB)。我想得到偏移量,我可以在那里找到一个小的一个。我玩了grep -a -x,xdd和od但到目前为止没有运气。

1 个答案:

答案 0 :(得分:0)

如果你不需要它作为脚本的功能,但只是为了处理一次性事件你可以试试这个:

mindaugasb@bash:~/workspace $ touch file.txt
mindaugasb@bash:~/workspace $ echo "0020 0000 0000 0000 0000 0000 0000" > file.txt 
mindaugasb@bash:~/workspace $ hexdump /bin/ls | grep -f file.txt 
001a7a0 0020 0000 0000 0000 0000 0000 0000 0000
001aaf0 0020 0000 0000 0000 0000 0000 0000 0000
001ad30 0020 0000 0000 0000 0000 0000 0000 0000
001ad70 0020 0000 0000 0000 0000 0000 0000 0000

传递给grep的文件应该包含较小文件的第一行。如果没有重复,那么你很幸运。

hexdump输出的第一列是偏移量。

如果你想要将hexdump输出用于较小的文件 - 你应该把它放在没有字节偏移的情况下,因为grep永远不会匹配,因为字节偏移是特定于每个文件的 - 你需要禁用字节偏移,比如这样:

mindaugasb@bash:~/workspace $ hexdump -e '16/1 "%02x " "\n"' /bin/ls | head -n1
7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00