在Linux下使用vim配合xxd查看并编辑二进制文件

最近需要在Linux阅读二进制文件,一时还不适应。平时都是文本格式的。

 

网上找了一下,有两篇不错,都是介绍vim的。

第一个是:http://www.cnblogs.com/killkill/archive/2010/06/23/1763785.html

原文如下:

通常来说文件分为文本和二进制文件两大类,文本文件的编辑很容易,Windows下的notepad、UltraEdit都很好用,二进制文件的编辑在Windows下也有很多工具,UltraEdit也不错,但是Linux下呢?今天终于发现了一个好方法,但是最终出处找不到了。

 

首先创建一个二进制文件:

?
1
2
3
[oracle@logserver tmp]$ echo -n "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz" > test .bin 
[oracle@logserver tmp]$ cat test .bin 
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz[oracle@logserver tmp]$

注意echo 一定要跟上 -n 选项,否则会被自动加上一个换行行,再用vim打开 test.bin

?
1
[oracle@logserver tmp]$ vim -b test .bin

vim 的 -b 选项是告诉 vim 打开的是一个二进制文件,不指定的话,会在后面加上 0x0a ,即一个换行符。

在命令模式下键入:

?
1
:%!xxd

在Linux下使用vim配合xxd查看并编辑二进制文件_第1张图片

如果 vim 后面没有加 -b 选项就会出现可恶的 0x0a:

在Linux下使用vim配合xxd查看并编辑二进制文件_第2张图片

如果有 -b 选项就不会有这种情况:

在Linux下使用vim配合xxd查看并编辑二进制文件_第3张图片

然后进入编辑模式改,改就是了,我将A、B对应的41、42改成61、62,将a、b对应的61、62改成41、42。

在Linux下使用vim配合xxd查看并编辑二进制文件_第4张图片

回到命令模式输入:

?
1
:%!xxd -r

在Linux下使用vim配合xxd查看并编辑二进制文件_第5张图片

此时可以发现AB和ab的位置互换了。

在Linux下使用vim配合xxd查看并编辑二进制文件_第6张图片

最后在命令模式中输入 :wq 保存退出即可。

 

============== 第二篇:Linux下二进制文件的查看和编辑

http://blog.csdn.net/hansel/article/details/5097262

原文如下:

一、在Linux下查看二进制文件的软件:

xxd

hexdump

 

二、编辑:

1、biew

2、hexedit

3、vim

Vim 来编辑二进制文件。Vim 本非为此而设计的,因而有若干局限。但你能读
取一个文件,改动一个字符,然后把它存盘。结果是你的文件就只有那一个字符给改了,
其它的就跟原来那个一模一样。
   要保证 Vim 别把它那些聪明的窍门用错地方,启动 Vim 时加上 "-b" 参数:
        vim -b datafile
这个参数设定了 'binary' 选项。其作用是排除所有的意外副作用。例如,'textwidth'
设为零,免得文本行给擅自排版了。并且,文件一律以 Unix 文件格式读取。
二进制模式可以用来修改某程序的消息报文。小心别插入或删除任何字符,那会让程序运
行出问题。用 "R" 命令进入替换模式。
文件里的很多字符都是不可显示的。用 Hex 格式来显示它们的值:
        :set display=uhex
另外,也可以用命令 "ga"  来显示光标下的字符值。当光标位于一个  字符上时,
该命令的输出看起来就像这样:
          27, Hex 1b,  Octal 033
文件中也许没那么多换行符。你可以关闭 'wrap' 选项来获得总览的效果:
        :set nowrap
字 节 位 置
要发现你在文件中的当前字节位置,请用这个命令:
        g CTRL-G
其输出十分冗长:
    Col 9-16 of 9-16; Line 277 of 330; Word 1806 of 2058; Byte 10580 of 12206
最后两个数字就是文件中的当前字节位置和文件字节总数。这已经考虑了 'fileformat'
选项导致换行符字节不同的影响。
    要移到文件中某个指定的字节,请用 "go" 命令。例如,要移到字节 2345:
        2345go
使 用 XXD
一个真正的二进制编辑器用两种方式来显示文本: 二进制和十六进制格式。你可以在 Vim
里通过转换程序 "xxd" 来达到这效果。该程序是随 Vim 一起发布的。
   首先以二进制方式编辑这个文件:
        vim -b datafile
现在用 xxd 把这个文件转换成十六进制:
        :%!xxd
文本看起来像这样:
        0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49  ....9..;..tt.+NI
        0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30  K,.`.....b..4^.0
        0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9  7;'1.".....i.59.
现在你可以随心所欲地阅读和编辑这些文本了。 Vim 把这些信息当作普通文本来对待。
修改了十六进制部分并不导致可显示字符部分的改变,反之亦然。
   最后,用下面的命令把它转换回来:
        :%!xxd -r
只有十六进制部分的修改才会被采用。右边可显示文本部分的修改忽略不计。

你可能感兴趣的:(oracle,linux,windows,unix,vim,hex)