首頁>技術>

推薦:每天一個Linux命令(1):xargs

功能簡介

od(Octal Dump)命令用於將指定檔案內容以八進位制、十進位制、十六進位制、浮點格式或ASCII編碼字元方式顯示,通常用於顯示或檢視檔案中不能直接顯示在終端的字元。od命令系統預設的顯示方式是八進位制。

常見的檔案為文字檔案和二進位制檔案。od命令主要用來檢視儲存在二進位制檔案中的值,按照指定格式解釋檔案中的資料並輸出,不管是IEEE754格式的浮點數還是ASCII碼,od命令都能按照需求輸出它們的值。

大家也可以瞭解一下hexdump命令,以十六進位制輸出,但感覺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、設定第一列偏移地址以十進位制顯示。

od -Ad testfile#偏移地址顯示基數有:d for decimal, o for octal, x for hexadecimal or n for none。

2、od 不顯示第一列偏移地址。

od -An testfile

3、以十六進位制輸出,預設以四位元組為一組(一列)顯示。

od -tx testfile

4、以十六進位制輸出,每列輸出一位元組。

od -tx1 testfile

5、顯示ASCII字元和ASCII字元名稱,注意換行符顯示方式的區別。

#顯示ASCII字元[b3335@localhost]$ echo lvlv|od -a0000000   l   v   l   v  nl0000005#顯示ASCII字元名稱[b3335@localhost]$ echo lvlv|od -tc0000000   l   v   l   v  n0000005

6、以十六進位制顯示的同時顯示原字元。

[b3335@localhost]$ echo lvlv|od -tcx10000000   l   v   l   v  n         6c  76  6c  76  0a0000005

7、指定每行顯示512位元組。

od -w512 -tx1 testfile

8、od 命令輸出時去除列與列之間的空格符。

當我們需要將檔案內容顯示為十六進位制,需要輸出連續的單個位元組,每個位元組以十六進位制顯示。這時我們可以透過od命令將檔案以單個位元組為一組,十六進位制輸出在同一行,並去除每個位元組之間的空格。目前還不知道怎麼透過指定od命令的相關選項去除列與列之間的空格,也許od命令本身並不支援。我的做法是:

(a)使用-An不輸出偏移地址;(b)使用-v輸出時不省略重複的資料;(c)使用-tx1以單個位元組為一組按照十六進位制輸出,-w1每列輸出一個位元組;(d)最後透過管道傳遞給 awk 的標準輸入,透過awk不換行輸出所有行,拼接為一行輸出。

具體命令如下:

od -An -w1 -tx1 testfile|awk '{for(i=1;i<=NF;++i){printf "%s",$i}}'

10
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • HCNA-知識點57