`

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。

分享到:
评论

相关推荐

    6-4.比较指令CMP_PLC应用指令的功能、用法及在工程中的应用.flv

    6-4.比较指令CMP_PLC应用指令的功能、用法及在工程中的应用flv,比较指令CMP_PLC应用指令的功能、用法及在工程中的应用

    三菱plc比较指令CMP.doc

    ### 三菱PLC比较指令CMP详解 #### 一、引言 在现代工业自动化领域,可编程逻辑控制器(PLC)扮演着极其重要的角色。三菱PLC作为市场上广受欢迎的品牌之一,提供了丰富的指令集来满足各种控制需求。其中,比较指令...

    功能指令MOV传送CMP比较指令PPT课件.pptx

    本资源为功能指令MOV传送CMP比较指令PPT课件,主要讲解了功能指令的表达形式、使用要素、分类、传送比较类指令的应用等内容。该课件共10页,涵盖了多个方面的知识点,以下是对该资源的详细解读: 一、功能指令的...

    Linux cmp命令用法详解

    Linux cmp命令用于比较两个文件是否有差异。 当相互比较的两个文件完全一样时,则该指令不会显示任何信息。若发现有所差异,预设会标示出第一个不同之处的字符和列数编号。若不指定任何文件名称或是所给予的文件名为...

    可编程控制器的CMP比较指令编程实例及仿真 .pptx

    可编程控制器的CMP比较指令编程实例及仿真 可编程控制器的CMP比较指令编程实例及仿真是指在可编程控制器中使用CMP指令来比较两个确定的数值,并根据比较结果执行不同的操作。本文将通过三菱PLC的编程实例介绍CMP...

    功能指令MOV传送CMP比较指令PPT学习教案.pptx

    本篇PPT主要介绍了几种关键的功能指令,包括MOV(传送指令)、CMP(比较指令)和ZCP(区间比较指令),以及触点形比较指令。这些指令对于理解和编写高效、精确的PLC程序至关重要。 1. **MOV(传送指令)**:MOV指令...

    arm cmp指令

    ### ARM架构中的CMP指令详解 #### 一、CMP指令概述 在ARM(Advanced RISC Machines)架构中,CMP指令是一种非常重要的操作指令,主要用于比较两个数值。它将一个寄存器的内容与另一个寄存器的内容或者一个立即数...

    linux diff & patch

    Linux diff和patch是GNU Diffutils软件包的一部分,这些工具用于展示、比较和合并文件的差异。了解diff的原理和使用方式,可以帮助用户有效地管理和同步文件更改。diff命令可以比较文件之间的差异,并以多种格式输出...

    三菱 GPPW INC和CMP指令运用六.rar

    CMP(Compare)指令是另一个关键的比较指令,它用于比较两个数值并根据比较结果设置标志位。CMP指令有多种模式,可以进行大于、小于、等于或不等于的比较,这些比较结果可以作为后续指令的条件,例如跳转、选择性...

    CMP工艺过程技术详解PPT

    CMP工艺过程技术详解 CMP(Chemical Mechanical Polishing,化学机械抛光)是半导体制造中的一个关键工艺过程,旨在实现Wafer表面的平坦化和抛光。CMP工艺过程技术详解PPT旨在为读者提供CMP工艺的详细介绍,涵盖CMP...

    嵌入式指令集详解 2440

    3. **CMP 指令**:用于比较两个操作数,不保存结果,但会更新条件标志位。例如: ```assembly CMP R1, R2 ; 比较R1和R2,根据结果更新条件标志位 ``` 除了以上指令,还有其他数据处理指令,如ADD、SUB、MUL、AND...

    Linux指令一周通 (技术图书大系).azw3

    1.13 cmp指令:比较文件差异 1.14 cp指令:复制 1.15 cpio指令:备份文件 1.16 csplit指令:分割文件 1.17 cut指令:剪切文件 1.18 diff指令:生成差异信息 1.19 diffstat指令:diff结果的统计信息 1.20 dump指令:...

    ARM指令集详解

    ### ARM指令集详解 #### 一、ARM指令集概述 ARM指令集是针对ARM架构处理器设计的一系列机器语言指令,这些指令定义了处理器如何执行计算任务。ARM指令集支持两种不同的指令子集:ARM指令集(32位)和Thumb指令集...

    OD常用汇编指令集详解

    ### OD常用汇编指令集详解 #### 概述 本文档旨在详细介绍OD(OllyDbg)中常用的汇编指令集及其应用场景。汇编语言是一种低级编程语言,它为硬件提供了一种直接且高效的控制手段。对于软件逆向工程、调试及底层编程...

    INC和CMP指令运用三.rar

    `CMP`(Compare)指令则用于比较两个操作数。它并不改变任何寄存器的值,但会根据比较结果设置一些标志位,这些标志位随后可以被其他指令用来决定程序的流程。`CMP`可以比较两个寄存器、一个寄存器和一个立即数,...

    ARM 指令集 -ARM指令详解

    1. **数据处理指令**:包括移动(MOV)、加法(ADD)、减法(SUB)、比较(CMP)和逻辑操作(AND、ORR、EOR、BIC等)等指令,用于处理和操作数据。 2. **内存访问指令**:如加载(LDR)和存储(STR),用于从内存中...

    三菱 GPPW INC和CMP指令运用四.rar

    【标题】:“三菱GPPW INC和CMP指令运用四”主要涵盖了在三菱PLC编程中如何有效使用GPPW(脉冲写入)指令以及CMP(比较)指令,这两个指令在自动化控制系统的精细化操作中起着关键作用。GPPW用于生成精确的脉冲序列...

    linux一些基本指令的使用

    ### Linux基本指令使用详解 #### 一、简介 在Linux操作系统中,命令行接口(Command Line Interface, CLI)是用户与系统交互的重要方式之一。通过掌握一系列基础命令,用户可以高效地进行文件管理、系统配置等工作。...

Global site tag (gtag.js) - Google Analytics