如何从 shell 脚本中 grep 查找十六进制模式?

如何从 shell 脚本中 grep 查找十六进制模式?

感谢这个线程: https://stackoverflow.com/questions/23695609/how-to-grep-for-presence-of-specific-hex-bytes-in-files

我已经确定我可以 grep 文件中的特定十六进制模式并返回 bash 的偏移量,如下所示:

$ time grep -obUaP -m1 "\xFF\xFF\x00\x01\x00\x01\x04\x02\x00\x00\x00\x00\x00\x00\x00\x00" file.bin
1440710656:��

real    0m0.553s
user    0m0.452s
sys     0m0.101s

但是,我正在尝试将其包含在脚本中。从 bash 中运行该确切命令时脚本, 它失败:

$ cat script.sh
#!/bin/bash

time grep -obUaP -m1 "\xFF\xFF\x00\x01\x00\x01\x04\x02\x00\x00\x00\x00\x00\x00\x00\x00" file.bin

$ ./script.sh

real    0m20.888s
user    0m20.505s
sys     0m0.378s

我尝试过对模式使用单引号、不使用引号、存储在变量中等,但我不知道如何实现这一点。我不知道为什么它一开始就不起作用,所以我不确定我到底应该排除什么故障。

对我所缺少的有什么建议吗?

相关内容