感谢这个线程: 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
我尝试过对模式使用单引号、不使用引号、存储在变量中等,但我不知道如何实现这一点。我不知道为什么它一开始就不起作用,所以我不确定我到底应该排除什么故障。
对我所缺少的有什么建议吗?