0
点赞
收藏
分享

微信扫一扫

Linux cmp命令和diff命令


cmp 比较二进制文件内容差异

功能:cmp 命令逐字节比较两个文件内容。如果两个文件内容完全,则cmp命令不显示任何内容。若两个文件内容有差异,会显示第一个不同之处的字节数和行数编号。如果文件是 “-” 或没给出,则从标准输入读入内容。一般用cmp命令比较二进制文件,​​diff命令​​比较文本文件。

语法:cmp    [选项]   [文件1] [文件2]

-l

--verbose

显示每一个不同点的字节号(10进制)和不同点的字节内容(8进制)

-b

--print-bytes

显示文件不同的字节

-i NUM

--ignore-initial=NUM

越过开始的NUM个字节开始比较。

-i NUM:NUM2

--ignore-initial=NUM:NUM2

第一个文件越过开始的NUM1个字节,第二个文件越过开始的NUM2个字节,开始比较。

-n NUM

--bytes=NUM

设定比较的上限,最多比较 NUM 个字节。

-s

--quiet

--silent

抑制所有的默认输出。

文件相同只返回0;文件不同返回1;发生错误返回2.

不使用参数,直接比较两个文件 
$ cmp file1 file2

file1 file2 differ: char 23, line 6 若输出是这结果。那么说明file1文件与file2文件内容在第6行的第23个字符开始有差异
cmp: EOF on file1 若输出是这样的结果。那么说明file2前半部分与file1相同。但在file2中还有其他数据。


参数 -l ,显示差异的位置以及字符内容
$ cmp -l file1 file2
34 75 53 在34个字节处两个文件开始不同,其中一个内容是75(八进制),另一个是53(八进制)

 cmp 实例

[root@www ~]# cmp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old 
/usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old differ: byte 25, line 1
可以看到两个二进制文件从第一行第25个字节处就开始有差异

 

diff比较文件的差异

Linux diff命令用于比较文件的差异。diff以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。

实例1:比较两个文件

[root@localhost test3]# diff log2014.log log2013.log 
3c3
< 2014-03
---
> 2013-03
8c8
< 2013-07
---
> 2013-08
11,12d10
< 2013-11
< 2013-12

实例2:并排格式输出

[root@localhost test3]# diff log2014.log log2013.log  -y -W 50
2013-01 2013-01
2013-02 2013-02
2014-03 | 2013-03
2013-04 2013-04
2013-05 2013-05
2013-06 2013-06
2013-07 2013-07
2013-07 | 2013-08
2013-09 2013-09
2013-10 2013-10
2013-11 <
2013-12 <
[root@localhost test3]# diff log2013.log log2014.log -y -W 50
2013-01 2013-01
2013-02 2013-02
2013-03 | 2014-03
2013-04 2013-04
2013-05 2013-05
2013-06 2013-06
2013-07 2013-07
2013-08 | 2013-07
2013-09 2013-09
2013-10 2013-10
> 2013-11
> 2013-12

-y或--side-by-side  以并列的方式显示文件的异同之处。
-W<宽度>或--width<宽度>  在使用-y参数时,指定栏宽。

说明:

  • "|"表示前后2个文件内容有不同
  • "<"表示后面文件比前面文件少了1行内容
  • ">"表示后面文件比前面文件多了1行内容
举报

相关推荐

0 条评论