次の内容を含むバイナリファイルがあります(16進数で印刷されます)。
$ xxd -p virus.com
5669727573b440bb0100b90500ba0000cd21
最初の5文字(英数字の文字列「Virus」など)を次のように組み合わせることができます。
$ gawk '/\x56\x69\x72\x75\x73/ { print "Match!" }' virus.com
Match!
$
しかし、6番目の文字(英数字ではない)を含めると
$ 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
バイトと文字が同じことを意味することを確認してください。