参数简介
xxd -h[elp]
xxd [options] [infile [outfile]]
xxd -r[evert] [options] [infile [outfile]]
如果没有指定输入文件, 则采用标准输入。
-b: 以2进制格式进行输出
[work@cq02.com src]$ xxd -b train.ini
0000000: 01011011 01110100 01110010 01100001 01101001 01101110 [train
0000006: 01011101 00001101 00001010 01101110 01100111 01110010 ]..ngr
000000c: 01100001 01101101 01100110 01101001 01101100 01100101 amfile
-c: 每行输出多少个字节
[work@cq02-.com src]$ xxd -c4 train.ini
0000000: 5b74 7261 [tra
0000004: 696e 5d0d in].
....
-g: 几个字节组成一组
[work@cq02.com src]$ xxd -g4 train.ini
0000000: 5b747261 696e5d0d 0a6e6772 616d6669 [train]..ngramfi
0000010: 6c653d22 6e675f32 772e7478 74220d0a le="ng_2w.txt"..
0000020: 69746572 636f756e 743d3430 30300d0a itercount=4000..
[work@cq02-.com src]$ xxd -i train.ini
unsigned char train_ini[] = {
0x5b, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x5d, 0x0d, 0x0a, 0x67, 0x61, 0x6d, 0x66, 0x6c, 0x65, 0x3d, 0x22, 0x5f, 0x32, 。。。。
0x69, 0x73, 0x22
};
unsigned int train_ini_len = 148;
-l : 输出几个字节后结束
[work@cq02.com src]$ xxd -l12 train.ini0000000: 5b74 7261 696e 5d0d 0a6e 6772 [train]..ngr
[work@cq02.com src]$ xxd -p train.ini
5b747261696e5d0d0a6e6772616d66696c653d226e675f32772e74787422
0d0a69746572636f756e743d343030300d0a73766d6761703d302e303030
310d0a74656d706469723d2274656d70220d0a7664636c6973743d227664
632e7478742220204f520d0a77686974656c6973743d2277686974652e6c
697374220d0a626c61636b6c6973743d22626c61636b2e6c69737422
-r: 反转操作,将16进制专程2进制
-s [+][-]seek : 从第几个字符开始
[work@cq02.com src]$ xxd -s5 train.ini
0000005: 6e5d 0d0a 6e67 7261 6d66 696c 653d 226e n]..ngramfile="n
0000015: 675f 3277 2e74 7874 220d 0a69 7465 7263 g_2w.txt"..iterc
0000025: 6f75 6e74 3d34 3030 300d 0a73 766d 6761 ount=4000..svmga
-u : 输出采用大写
使用范例
显示 file 除了 前 三行 (十六进制 的 0×30) 的 所有 内容.
$ xxd -s 0×30 file
显示 file 最后 三行 (十六进制 的 0×30) 的 所有 内容.
$ xxd -s -0×30 file
$ xxd -l 120 -ps -c 20 xxd.1
2e544820585844203120224d616e75616c207061
676520666f7220787864220a2e5c220a2e5c2220
32317374204d617920313939360a2e5c22204d61
6e207061676520617574686f723a0a2e5c222020
2020546f6e79204e7567656e74203c746f6e7940
7363746e7567656e2e7070702e67752e6564752e
显示 120 个 字符,每行 12 个 字符.
$ xxd -l 120 -c 12 xxd.1
0000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 “M
000000c: 616e 7561 6c20 7061 6765 2066 anual page f
0000018: 6f72 2078 7864 220a 2e5c 220a or xxd”..\”.
0000024: 2e5c 2220 3231 7374 204d 6179 .\” 21st May
0000030: 2031 3939 360a 2e5c 2220 4d61 1996..\” Ma
000003c: 6e20 7061 6765 2061 7574 686f n page autho
0000048: 723a 0a2e 5c22 2020 2020 546f r:..\” To
0000054: 6e79 204e 7567 656e 7420 3c74 ny Nugent
0000060: 6f6e 7940 7363 746e 7567 656e ony@sctnugen
000006c: 2e70 7070 2e67 752e 6564 752e .ppp.gu.edu.
只 显示 xxd.1 中 的 日期.
$ xxd -s 0×28 -l 12 -c 12 xxd.1
0000028: 3231 7374 204d 6179 2031 3939 21st May 199
把 input_file 考到 output_file 并 在 前面 增加 100 个 字节的 0×00.
$ xxd input_file | xxd -r -s 100 > output_file
给 档桉 xxd.1 中的 日期 打 补钉.
$ echo ‘0000029: 3574 68′ | xxd -r – xxd.1
$ xxd -s 0×28 -l 12 -c 12 xxd.1
0000028: 3235 7468 204d 6179 2031 3939 25th May 199
建立 一个 65537 字节的 档桉,所有 字节 都是 0×00,除了 最后 一个 字节 是 ‘A’ (十六进制 0×41).
$ echo ‘010000: 41′ | xxd -r > file
打开 autoskip,显示 上例 中 建立的 档桉.
$ xxd -a -c 12 file
0000000: 0000 0000 0000 0000 0000 0000 …………
*
000fffc: 0000 0000 40 ….A
建立 一个 只 含有 一个 ‘A’ 的 档桉. ‘-r -s’ 后面 的数字 同 档桉 中的 行号 相 抵消; 结果是 开头 的 字节 被跳过了.
$ echo ‘010000: 41′ | xxd -r -s -0×10000 > file
从 串行线 中 读入 一个个的 单独的 字符.
$ xxd -c1 < /dev/term/b &
$ stty < /dev/term/b -echo -opost -isig -icanon min 1
$ echo -n foo > /dev/term/b
当我们需要把二进制转成c语言中使用的16进制字符数组时,命令xxd是很有用的。
xxd 帮助信息如下:关键选项标黑。
[root@localhost ]# xxd --help
Usage:
xxd [options] [infile [outfile]]
or
xxd -r [-s [-]offset] [-c cols] [-ps] [infile [outfile]]
Options:
-a toggle autoskip: A single '*' replaces nul-lines. Default off.
-b binary digit dump (incompatible with -p,-i,-r). Default hex.
-c cols format <cols> octets per line. Default 16 (-i: 12,-ps: 30).
-E show characters in EBCDIC. Default ASCII.
-g number of octets per group in normal output. Default 2. 每个goup的字节数,默认为2,可设置。
-h print this summary.
-i output in C include file style. :输出为c包含文件的风格,数组方式存在。
-l len stop after <len> octets. :转换到len个字节后停止转换。
-ps output in postscript plain hexdump style.
-r reverse operation: convert (or patch) hexdump into binary.
-r -s off revert with <off> added to file positions found in hexdump.
-s [+][-]seek start at <seek> bytes abs. (or +: rel.) infile offset.
-u use upper case hex letters. : 字节大写方式
-v show version: "xxd V1.10 27oct98 by Juergen Weigert".
比如运行:
> xxd -g 1 -i -u -l 10000000 nm.ts > xxd_test.txt
unsigned char __0513_1634_ch32_666_10_ts[] = {
0X47,0X02,0X03,0X13,0XF8,0X5A,0XC5,0X40,0X26,0XE4,0XD0,0XDE,0XAD,0XB8,0X76,0X89,0X85,0X23,0X06,0X04,0X6E,0X05,0X8B,0X09,0XC0,0X5C,0X96,0X4F,0X18,0X51,0X41,0XC8,0X9F,0X93,0X38,0XC1,0XBB,0X1A,0XBC,0XAC,0X47,0XFF,0X5E,0X54,0XEB,0XA7,0X14,0X36,0X8A,0X90,0X17,0XA2,0X9D,0X84,0X56,0XCB,0X97,0X78,0X57,0X15,0X3E,0X61,0X6F,0XFE,0XC9,0X39,0XEF,0XD3,0XB6,0X6A,0XD2,0XFB,0X4C,0XF6,0XED,0X50,0XB3,0XE7,0X46,0X24,0X71,0X16,0X45,0X53,0X19,0X25,0X3C,0X8D,0XA9,0X28,0X9A,0XB2,0X99,0X52,0XE9,0XD6,0X11,0X94,0X4D,0XEA,0X68,0XC6,0XAA,0X3A,0XD4,0XA1,0XA5,0XB0,0X73,0XA0,0XAE,0XBD,0X37,0X5F,0X30,0X34,0X0B
.....
};
unsigned int nm.ts_len = 10000000;
:%!xxd
返回正常显示:
:%!xxd -r
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。