我有一个二进制文件,内容如下(以十六进制打印):
$ 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
确保字节和字符含义相同。