我想檢查文件內部是否匹配二進制模式。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