大きなバイナリファイル(grep、sed)から、開始位置から定義されたバイト数までの16進数シーケンスを検索します。

大きなバイナリファイル(grep、sed)から、開始位置から定義されたバイト数までの16進数シーケンスを検索します。

/dev/disk0s1私のMacには、このバイナリ「ファイル」(512GB実際にはAFPSによるドライブまたはボリューム)があり、この16進数シーケンス(ASCIIで示されている)をmacOS見つける必要があります。0x41, 0x50, 0x53, 0x42APSB

同様に、hexdump分析する移動(開始点)とバイト数を制御したいと思います。

以下はいくつかの関連質問です。質問この質問。たぶんうまくいくgrepかもしれませんが、それを私の質問として使用する方法がわかりません。sedmacOS

sh-3.2# hexdump -n 4096 -Cv /dev/disk0s1 -s 0
00000000  8d 1c 09 48 65 8c 3c 6e  01 00 00 00 00 00 00 00  |...He.<n........|
00000010  bd 04 00 00 00 00 00 00  01 00 00 80 00 00 00 00  |................|
00000020  4e 58 53 42 00 10 00 00  00 f4 01 00 00 00 00 00  |NXSB............|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000040  02 00 00 00 00 00 00 00  a8 8d 96 da 5a 95 46 e6  |............Z.F.|
00000050  82 3e fb 1e 40 7d 3e 79  16 04 00 00 00 00 00 00  |.>..@}>y........|
00000060  be 04 00 00 00 00 00 00  10 00 00 00 84 04 00 00  |................|
00000070  01 00 00 00 00 00 00 00  11 00 00 00 00 00 00 00  |................|
00000080  0a 00 00 00 e2 00 00 00  00 00 00 00 00 00 00 00  |................|
00000090  00 00 00 00 00 00 00 00  00 04 00 00 00 00 00 00  |................|
000000a0  34 1e 00 00 00 00 00 00  01 04 00 00 00 00 00 00  |4...............|
000000b0  00 00 00 00 04 00 00 00  02 04 00 00 00 00 00 00  |................|
000000c0  06 04 00 00 00 00 00 00  08 04 00 00 00 00 00 00  |................|
000000d0  0a 04 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000000e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000000f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000100  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000110  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000120  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000130  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000140  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000150  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

パターンが一致したら、ファイルの先頭のオフセット(16進数)を知りたいです。最初の一致後に検索を停止する必要があります。

事前にありがとう

答え1

「grep」が機能するはずです。私のLinuxディストリビューションはバイナリをサポートしています。値は8進数で表され、前にバックスラッシュと0が付きます。

素晴らしい。 POSIXでは、「-b offset」の指定は許可されません。 grepを使用するには、grepをインストールする必要があります。これは「unix.stackexchange.com」なので、私の指示は正当であり、異議申し立てはマニュアルページに対する抗議であると仮定します。私(そして他の人)は違う心配があります。

関連情報