毎日1つのLinuxコマンド(2):od

2999 ワード

機能の概要
od(Octal Dump)コマンドは、指定されたファイルの内容を8進数、10進数、16進数、浮動小数点フォーマット、またはASCII符号化文字で表示するために使用されます.通常、ファイルに端末に直接表示できない文字を表示または表示するために使用されます.odコマンドシステムのデフォルトの表示方法は8進法です.
一般的なファイルはテキストファイルとバイナリファイルです.odコマンドは主にバイナリファイルに保存された値を表示し、指定されたフォーマットでファイルのデータを解釈して出力するために使用され、IEEE 754フォーマットの浮動小数点数でもASCIIコードでもodコマンドは必要に応じて値を出力することができます.
hexdumpコマンドは16進数で出力されていることもわかりますが、hexdumpコマンドはodコマンドほど強くないような気がします.
コマンドフォーマット
od [OPTION]... [FILE]... 

オプションの説明
-A RADIX
  --address-radix=RADIX
 #             
-j BYTES
  --skip-bytes=BYTES
 #         
-N BYTES
  --read-bytes=BYTES
 #       
-S [BYTES]
  --strings[=BYTES]
 #                ,BYTES     3
-v
  --output-duplicates
 #           
-w [BYTES]
  --width[=BYTES]
 #          ,BYTES     32   
-t TYPE
  --format=TYPE
 #      ,     a、c、d、f、o、u   x,     :
  a:    ;         nl
  c:                ;         n
  d[SIZE]:SIZE               。SIZE     sizeof(int)
  f[SIZE]:SIZE          。SIZE     sizeof(double)
  o[SIZE]:SIZE            。SIZE     sizeof(int)
  u[SIZE]:SIZE               。SIZE     sizeof(int)
  x[SIZE]:SIZE             。SIZE     sizeof(int)
  SIZE     ,        。   TYPE   [doux]     ,  SIZE    C = sizeof(char),S = sizeof(short),I = sizeof(int),L = sizeof(long)。   TYPE   f,   SIZE     F = sizeof(float),D = sizeof(double) ,L = sizeof(long double)
--help
 #    
--version
 #       

一般的な例
1.第1列目のオフセットアドレスを10進数で表示するように設定します.
od -Ad testfile
#         :d for decimal, o for octal, x for hexadecimal or n for none。 

2、odは第1列オフセットアドレスを表示しない.
od -An testfile 

3、16進数で出力し、デフォルトでは4バイトを1組(1列)として表示します.
od -tx testfile 

4、16進数で出力し、列ごとに1バイト出力する.
od -tx1 testfile 

5、ASCII文字とASCII文字名を表示し、改行文字の表示方式の違いに注意する.
#  ASCII  
[b3335@localhost]$ echo lvlv|od -a
0000000   l   v   l   v  nl
0000005
#  ASCII    
[b3335@localhost]$ echo lvlv|od -tc
0000000   l   v   l   v  n
0000005 

6、16進数で表示しながら元の文字を表示します.
[b3335@localhost]$ echo lvlv|od -tcx1
0000000   l   v   l   v  n
         6c  76  6c  76  0a
0000005 

7、各行512バイトを表示することを指定します.
od -w512 -tx1 testfile 

8、odコマンド出力時に列と列の間のスペースを除去します.
ファイルの内容を16進数で表示する必要がある場合は、連続する単一バイトを出力し、各バイトを16進数で表示する必要があります.この場合、odコマンドでファイルを単一バイトでグループ化し、16進数で同じ行に出力し、各バイト間のスペースを除去できます.odコマンドの関連オプションを指定して列と列の間のスペースを除去する方法はまだ分かりません.odコマンド自体がサポートされていないかもしれません.私のやり方は:
  • (a)オフセットアドレスは−ANを用いて出力されない.
  • (b)-v出力を使用する場合、重複するデータは省略されない.
  • (c)は、-tx 1を用いて単一バイトを1組として16進数で出力し、-w 1は列ごとに1バイトを出力する.
  • (d)は最後にパイプを介してawkの標準入力に伝達され、awkを介してすべての行を改行せずに出力し、1行の出力につなぎ合わせる.

  • 具体的なコマンドは次のとおりです.
    od -An -w1 -tx1 testfile|awk '{for(i=1;i<=NF;++i){printf "%s",$i}}' 

    ソース:https://dablelv.blog.csdn.net...