我想检查文件内部是否匹配二进制模式。Bash匹配二进制模式
对于这一点,我使用ClamAV的签名数据库
Trojan.Bancos-166:1:*:3d415d736715ab5ee347238cacac61c7123fe35427224d25253c7b035558baf19e54e8d1a82742d6a7b37afc6d91015f751de1102d0a31e66ec33b74034b1ab471cc1381884dfdf0bb3e4233bd075fef235f342302ffd72ecabfa5aedf1b3dc99b3348346db4d9001026aef44c592fee61493f7262ad2bd1bce8a7ce60d81022533f6473ae184935f25cf6cc07c3aebfdf70a5a09139
我这个代码来检索十六进制字符串表示签名
signature=$(echo "$line" |awk -F':' '{ print $4 }')
而且我改变十六进制字符串为二进制
printf -v variable $(sed 's/\(..\)/\\x\1/g;' <<< "$signature")
直到这里它完美的作品。
最后,我想检查我的文件(* $ raw_file_path *)(现为$变量)我的二进制模式匹配 我试试这个
test_var=$(grep -qU "$variable" "$raw_file_path")
或
test_var=$(grep -qU --regexp="$variable" "$raw_file_path")
我不不知道为什么它不起作用,Grep不匹配任何东西 。 有时一些错误:
的grep:斜杠
的grep:无效的正则表达式
我知道它的模式匹配问题的交易。 在我的测试中,我不想使用正则表达式。
如果您有任何想法或其他bash工具。 谢谢。
一起遵循@桑普森臣的回答,你“通过确认'$(...)'内部的内容是否正确工作,然后再添加将输出保存到变量中的额外步骤,从而节省自己的痛苦。祝你好运。 – shellter