gawkを使用した16進一致

gawkを使用した16進一致

次の内容を含むバイナリファイルがあります(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

バイトと文字が同じことを意味することを確認してください。

おすすめ記事