本文简介Linux中的进制转换小工具xxd、od
适用场景举例:
查看某个配置文件,是否有空格等特殊字符
可以xxd 文件,转换成十六进制的,查看是否含有20(空格在ASCII码中转换为十六进制的为20,=对应的为3d),一般根据20可以看出是否有空格
备注:ASCII码中字符对应转换十六进制关系,可以通过man ascii 或者od命令来查看(其中常用的20 为空格 3d为= od后面会介绍)
如下,最后的xxd显示没有20,表示配置后中没有空格
cat ons.properties |grep "ons.access"
ons.access.key=K8pfCPRU6gL2lldi
cat ons.properties |grep "ons.access"|xxd
0000000: 6f6e 732e 6163 6365 7373 2e6b 6579 3d4b ons.access.key=K
0000010: 3870 6643 5052 5536 674c 326c 6c64 690a 8pfCPRU6gL2lldi.
1、xxd 二进制或者十六进制查看文件
man中解释:
NAME
xxd - make a hexdump or do the reverse.
SYNOPSIS
xxd -h[elp]
xxd [options] [infile [outfile]]
xxd -r[evert] [options] [infile [outfile]]
几个重要参数:
-b 二进制输出
-p 整个输出没有空格
-s [+][-]seek : 从第几个字符开始
-u 大写输出
-r: 反转操作,将16进制专程2进制
xxd使用,可以参考一下博文,以下内容转载于
http://blog.csdn.net/u011067439/article/details/42124549
具体用法举例:
xxd -a -c 12 -g 1 -l 512 -s +0x200 [inputfile]
【自动跳过空白】【每行显示12字节】【一个字节一块】【显示512字节内容】【从0x200开始】【输入文件】
实际测试:
xxd -a -c 12 -g 1 -l 512 ons.properties
xxd -a -c 12 -g 1 -l 512 ons.properties
0000000: 6f 6e 73 2e 61 63 63 65 73 73 2e 6b ons.access.k
000000c: 65 79 3d 4b 38 70 66 43 50 52 55 36 ey=K8pfCPRU6
0000018: 67 4c 32 6c 6c 64 69 0a 6f 6e 73 2e gL2lldi.ons.
0000024: 73 65 63 72 65 74 2e 6b 65 79 3d 55 secret.key=U
0000030: 33 6c 59 56 47 6c 33 4c 39 6e 62 32 3lYVGl3L9nb2
000003c: 33 63 45 4d 6f 67 57 63 55 56 7a 69 3cEMogWcUVzi
0000048: 4c 4a 32 54 37 0a 6f 6e 73 2e 63 61 LJ2T7.ons.ca
0000054: 72 2e 73 65 72 76 69 63 65 2e 70 72 r.service.pr
0000060: 6f 64 75 63 65 72 2e 69 64 3d 50 49 oducer.id=PI
000006c: 44 5f 63 61 72 55 70 64 61 74 65 5f D_carUpdate_
0000078: 74 65 73 74 0a 6f 6e 73 2e 63 61 72 test.ons.car
0000084: 2e 73 65 72 76 69 64 65 2e 70 72 6f .servide.pro
0000090: 64 75 63 65 72 2e 74 6f 70 69 63 3d ducer.topic=
000009c: 63 61 72 55 70 64 61 74 65 5f 74 65 carUpdate_te
00000a8: 73 74 0a st.
2、od 查看特殊文件的格式内容,可以以十进制、八进制、十六进制、ASCII码等表示
man中释义
NAME
od - dump files in octal and other formats
SYNOPSIS
od [OPTION]... [FILE]...
od [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]
od --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.][b]]
重要参数:
- A 指定地址基数,包括:
d 十进制
o 八进制(系统默认值)
x 十六进制
n 不打印位移值
- t 指定数据的显示格式,主要的参数有:
c ASCII字符或反斜杠序列
除了选项c以外的其他选项后面都可以跟一个十进制数n,指定每个显示值所包含的字节数。
说明:od命令系统默认的显示方式是八进制,这也是该命令的名称由来(Octal
Dump)。但这不是最有用的显示方式,用ASCII码和十六进制组合的方式能提供更有价值的信息输出。
使用举例:
查看 = ASCII码转16进制 :
echo "="| od -An -t xC
3d 0a