Linux文本比较指令(diff,cmp)详解

发布时间:2016-12-9 21:26:28 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Linux文本比较指令(diff,cmp)详解",主要涉及到Linux文本比较指令(diff,cmp)详解方面的内容,对于Linux文本比较指令(diff,cmp)详解感兴趣的同学可以参考一下。

一、文本文件比较命令diff 1>diff命令的功能 Linux中diff命令的功能为逐行比较两个文本文件,列出其不同之处。它对给出的文件进行系统的检查,并显示出两个文件中所有不同的行,不要求事先对文件进行排序。 2>语法 diff [options] file1 file2 该命令告诉用户,为了使两个文件file1和file2一致,需要修改它们的哪些行。如果用”-”表示file1或file2,则表示标准输入。如果file1或file2是目录,那么diff将使用该目录中的同名文件进行比较。 3>[options]主要参数 -a:将所有文件当作文本文件来处理。 -b或–ignore-space-change  忽略空格造成的不同。 -B或–ignore-blank-lines  忽略空行造成的不同。 -c:使用纲要输出格式。 -H:利用试探法加速对大文件的搜索。 -I:忽略大小写的变化。 -n –rcs:输出RCS格式。 -N或–new-file  在比较目录时,若文件A仅出现在某个目录中,会显示:Only in目录;文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。 -r或–recursive  比较子目录中的文件。 -u,-U<列数>或–unified=<列数>  以合并的方式来显示文件内容的不同。 4>使用方法的实例说明 例如: diff /usr/xu mine 把目录/usr/xu 中名为mine的文件与当前目录中的mine文件进行比较。 通常输出由下述形式的行组成: n1 a n3,n4 n1,n2 d n3 n1,n2 c n3,n4 这些行类似ed命令把filel转换成file2。字母(a、d和c)之前的行号(n1,n2)是针对file1的,其后面的行号(n3,n4)是针对file2的。字母a、d和c分别表示附加、删除和修改操作。 在上述形式的每一行的后面跟随受到影响的若干行,以”<”打头的行属于第一个文件,以”>”打头的行属于第二个文件。 diff能区别块和字符设备文件以及FIFO(管道文件),不会把它们与普通文件进行比较。 如果file1和file2都是目录,则diff会产生很多信息。 5>diff最常用的功能 diff有很多功能平时我们不常用到,最常用的功能莫过于生成patch文件了: diff -urN old/ new/ > mysoft.patch 参数 -u 表示使用 unified 格式,-r 表示比较目录,-N 表示将不存在的文件当作空文件处理,这样新添加的文件也会出现在patch文件中。 然后在需要应用patch的地方使用下述命令即可: patch -p0 < mysoft.patch diff的 -y 命令(长格式为 –side-by-side)可以将屏幕分成左右两部分,来比较两个文件之间的差异。许多图形化的比较工具都有这个功能,但如果只能使用命令行,这个参数 就相当有用了。如果要改变左右各部分的宽度,可以通过 -W (–width)参数来指定。 –ignore-blank-lines 参数可以不检查空白行。这样DOS格式和Unix格式的文件互相比较时,就不至于因为换行符不一致而出现大量的差异。 二、二进制文件比较命令cmp 用途 比较两个文件的内容并报告不同的第一个字符。 语法 cmp [ -l | -s ] File1 File2 描述 cmp 命令比较 File1 和 File2 参数指定的文件,并将结果写到标准输出。如果为 File1 或 File2 参数指定 -(减号),则 cmp 命令读取该文件的标准输入。只可以从标准输入读取一个文件。在缺省条件下,如果文件相同,则 cmp 命令不显示任何内容。如果它们不同,则 cmp 命令显示发生不同的第一个字节数和行数。如果指定了 -l 标志,并且如果一个文件是另一文件的初始后继(即,如果在查找任何差别之前,cmp 命令读取文件中的文件结束符),则 cmp 命令记下它。通常,使用 cmp 命令比较非文本文件,使用 diff 命令比较文本文件。 标志 -l     对于每个不同,(小写字母 L)显示十进制的字节数和八进制的不同字节。 -s     只返回退出值。值 0 指示相同的文件;值 1 指示不同的文件;值 2 指示不可访问的文件或缺少选项。 退出状态 该命令返回以下退出值: 0     文件相同。 1     文件不同。即使一个文件是另一个文件的初始后继(一个文件与另一个文件的第一个部分相同),也给出该值。 >1     发生错误。 示例    1. 要确定两个文件是否相同,请输入:       cmp prog.o.bak prog.o       这比较 prog.o.bak 和 prog.o。如果文件相同,则不显示消息。如果文件不同,则显示第一个不同的位置;例如:       prog.o.bak prog.o differ: char 4, line 1       如果显示消息 cmp: EOF on prog.o.bak,则 prog.o 的第一部分与 prog.o.bak 相同,但在 prog.o 中还有其他数据。    2. 要显示不同字节的每个对,请输入: cmp -l prog.o.bak prog.o 这比较文件,然后显示字节数(使用十进制格式)和每个不同的不同字节(使用八进制格式)。例如,如果第五个字节在 prog.o.bak 中是八进制 101,在 prog.o 中是 141,则 cmp 命令显示:       5 101 141    3. 要比较两个文件,而不写任何消息,请输入:       cmp -s prog.c.bak prog.c 这样,如果文件相同,则给出值 0,如果不同,则给出值 1,或者如果发生错误,则给出值 2。该命令形式通常用在 shell 步骤中。例如:       if cmp -s prog.c.bak prog.c then echo No change fi 如果两个文件相同,则该部分的 shell 步骤显示 No change。

上一篇:Java NIO框架Netty教程(一) – Hello Netty
下一篇:java实现单点登录

相关文章

相关评论