gpt4 book ai didi

linux - Bash 匹配二进制模式

转载 作者:太空狗 更新时间:2023-10-29 11:09:55 25 4
gpt4 key购买 nike

我想检查文件内部是否与二进制模式匹配。

为此,我正在使用 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* ) 是否匹配我的二进制模式(现在在 $variable 中)我试试这个

test_var=$(grep -qU "$variable" "$raw_file_path")

test_var=$(grep -qU --regexp="$variable" "$raw_file_path")

不知道为什么不行,grep什么都不匹配.有时会出现一些错误:

  • grep:尾部反斜杠

  • grep: 无效的正则表达式

我知道它处理模式匹配问题。在我的测试中,我不想使用正则表达式。

如果您有任何想法,或其他 bash 工具。谢谢。

最佳答案

您当前通过在 -qU 中指定 qgrep 使用 --quiet 选项。这可以防止 grep 将任何内容打印到 stdout,因此不会将任何内容保存到 test_var

将您的代码更改为:

test_var=$(grep -UE "$variable" "$raw_file_path")

关于linux - Bash 匹配二进制模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13480119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com