出力しようとしていますASCIIいくつかのバイナリデータに対応する値。hexdump
ユーティリティをhexdumpおよびASCII side以下のように並べて:
00000120 20 20 20 20 3d 20 30 78 30 30 30 30 30 30 33 30 | = 0x00000030|
00000130 0a 01 00 00 00 23 00 00 00 75 75 69 64 30 20 20 |.....#...uuid0 |
00000140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d | =|
00000150 20 30 78 39 30 38 32 61 63 35 61 0a 01 00 00 00 | 0x9082ac5a.....|
00000160 23 00 00 00 75 75 69 64 31 20 20 20 20 20 20 20 |#...uuid1 |
00000170 20 20 20 20 20 20 20 20 20 20 3d 20 30 78 37 34 | = 0x74|
00000180 61 37 34 37 36 66 0a 01 00 00 00 23 00 00 00 75 |a7476f.....#...u|
00000190 75 69 64 32 20 20 20 20 20 20 20 20 20 20 20 20 |uid2 |
000001a0 20 20 20 20 20 3d 20 30 78 61 32 35 35 35 63 30 | = 0xa2555c0|
ただし、出力値としてASCIIのみを表示します。16進値には興味がありません。たとえば、出力は次のようになります(上記に対応) :
= 0x00000030.....#...
uuid0=0x9082ac5a.....
uuid1=0x74a7476f
(これにはhd
のスイッチを使用できませんでした。)
バイナリファイルのテキストコンテンツのみを表示する必要がある場合は、 strings が便利です。
指定された各ファイルについて、GNU
strings
は、少なくとも4文字の長さの印刷可能な文字シーケンス(または-n
オプションで指定された数字)を出力し、その後に続きますstrings
は、主に非テキストファイルの内容を判別するのに役立ちます。
raina77owからの回答strings(1)
コマンドについては、実際に必要な結果を得るための正しい方法ですが、 hexdump(1)
いくつかのコンテキストでは、印刷可能な文字のみを除外することは意味があります。具体的には、ここで対応します。
Hexdumpユーティリティは、驚くほど一般化されたフォーマットエンジンをサポートすることが判明しました。これはおそらく、選択可能なさまざまな形式の実装をより均一にするために行われたものです。 hexdumpのコピーが-e
コマンドラインオプションを介してそのエンジンを公開している場合(多くの場合)、実際に要求どおりに実行させることができます。
キーは-e
オプションとそれがサポートするフォーマット言語です。その言語では、入力のバイトを消費してテキストを生成するフォーマット文字列を指定できます。次のようなコマンド
$ hexdump -e "16 \"%_p\" \"\\n\"" hexdump.exe | head -16
一度に16バイトを消費し、%_p
形式で表示し、16バイトごとに改行を追加します。出力では、印刷できない文字はそれぞれ.
に置き換えられます。
考慮すべきその他の文字指向形式は、%_c
および%_u
です。最初の文字は、非印刷文字をANSI-Cエスケープシーケンスまたは3桁の8進数で置き換えます。 2番目は、非印刷の各文字をASCII制御文字の従来の名前、または2桁の16進数で置き換えます。
hexdump
のコピーに-e
オプションがないか、遅い場合、またはhexdump
の実装がまったくない場合は、最近、hexdump
の自由にライセンスされた、高速で、合理的な実装があります William Ahernによってリリースされました) は一見の価値があります。多くのUnixライクなシステム用にすぐにビルドでき、WindowsでMingW GCCを使用してビルドするのはわずかな微調整のみです。この実装の重要な属性は、単一のソースファイルを、 Lua から使用するLuaモジュール、およびhexdump
を実装するスタンドアロンの実行可能ファイルとして、別のプログラムに含めるための共有ライブラリとして構築できることです。コマンド。
od を使用できます。
od -t c file
またはawk
とhexdump
のように:
hexdump -C file | awk '{for(i=NF; i>17; --i) print $i}'
注:hexdumpの列数を変更する場合は、awkコマンドを変更する必要があります。
hexdump -C file /dev/sda4|cut -c 62-77
それが役に立てば幸い