認識 xxd 命令列指令

簡介

xxd 是一個命令列工具,可以使用十六進制的形式查看一個二進制的檔案。

使用

假設有一個 example.txt 檔如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
No.|Country|Yes/No
01|India|Y
02|US|Y
03|Australia|Y

04|China|N
05|Russia|Y
06|Japan|Y

07|Singapore|Y
08|South Korea|N
09|Finland|Y
10|Ireland|Y

使用 xxd 指令,將文字檔輸出成十六進制的形式。

1
xxd example.txt

輸出內容分為三個區塊:第一個區塊是十六進位轉儲(hex dump)的地址,每一行會印出 16 個字元,第二個區塊是檔案內容(會以 ASCII 編碼),而第三個區塊是檔案的原始值,若遇到沒辦法顯示的字元,會輸出「.」符號。

1
2
3
4
5
6
7
8
9
10
00000000: 4e6f 2e7c 436f 756e 7472 797c 5965 732f  No.|Country|Yes/
00000010: 4e6f 0a30 317c 496e 6469 617c 590a 3032 No.01|India|Y.02
00000020: 7c55 537c 590a 3033 7c41 7573 7472 616c |US|Y.03|Austral
00000030: 6961 7c59 0a0a 3034 7c43 6869 6e61 7c4e ia|Y..04|China|N
00000040: 0a30 357c 5275 7373 6961 7c59 0a30 367c .05|Russia|Y.06|
00000050: 4a61 7061 6e7c 590a 0a30 377c 5369 6e67 Japan|Y..07|Sing
00000060: 6170 6f72 657c 590a 3038 7c53 6f75 7468 apore|Y.08|South
00000070: 204b 6f72 6561 7c4e 0a30 397c 4669 6e6c Korea|N.09|Finl
00000080: 616e 647c 590a 3130 7c49 7265 6c61 6e64 and|Y.10|Ireland
00000090: 7c59 0a

使用 -s 指定從第幾列開始印出。

1
xxd -s 0x30 example.txt

使用 -l 指定印出的列數。

1
xxd -l 0x30 example.txt

將內容輸出到新的檔案。

1
xxd example.txt > dump.hex