用 gawk 匹配十六进制

用 gawk 匹配十六进制

我有一个二进制文件,内容如下(以十六进制打印):

$ xxd -p virus.com
5669727573b440bb0100b90500ba0000cd21

我可以将前 5 个字母(即字母数字字符串“Virus”)与

$ gawk '/\x56\x69\x72\x75\x73/ { print "Match!" }' virus.com 
Match!
$

但是一旦我包含第六个字母(不是字母数字)

$ gawk '/\x56\x69\x72\x75\x73\xb4/ { print "Match!" }' virus.com
$

将不再匹配。

为什么会这样?我该怎么做才能匹配整个模式?

答案1

您可能处于 UTF-8 语言环境中(检查 的输出 locale charmap)。

使用:

LC_ALL=C gawk '/\x56\x69\x72\x75\x73\xb4/ { print "Match!" }' virus.com

确保字节和字符含义相同。

相关内容