档案对比工具

  1. 前言
  2. diff
  3. cmp
  4. patch
  5. 参考资料

前言

档案对比工具一般是对ASCII纯文字文档进行对比,也可以对非纯文字文档进行对比。linux中常用的档案对比工具有diff、cmp和patch等。diff是对比ASCII纯文字文档,cmp可以对比非纯文字文档,

diff

diff工具一般用在纯文本文档中,以行为单位。

diff的基本语法如下:

diff [-bBi] from-file to-file
选项与参数:
-b:忽略一行中多个空格的差异,例如'about me'和'about  me',有一个空格和两个空格,但是'b'选项将两个字符串判定为相同的字符串;
-B:忽略空白行的差别;
-i:忽略大小写的差别。

from-file:文档名,对比的参考文件;
to-file:文档名,目标对比文件;

这里,我们使用一个例子来进行diff的演示。

  1. 使用mkdir /tmp/passwdt && cd /tmp/passwdt && cat /etc/passwd | tee passwd.old | sed -e '4d' > passwd.new创建路径/tmp/passwdt并设置当前路径为/tmp/passwdt并将原本的passwd内容制作两份文档。
    passwd.old文档内容
    passwd.new文档内容
  2. 比较两份文档的区别,diff /tmp/passwdt/passwd.old /tmp/passwdt/passwd.new结果如下图:
    用diff比较passwd.old和passwd.new的区别
    其中4d3表示参考文档的第四行被删除,对比的是目标对比文件的第三行。后面紧跟着的一行是被删除的内容。

diff工具除了能比较纯文本文件以外还能对目录等进行比较。

cmp

cmp用于比较两个文档字节的差别,与diff的行比较不同,cmp是以字节为单位进行比较,也可以比较二进制文档。下面以对比passwd.new和passwd.old两个文档,执行结果如下:

cmp对比结果

patch

patch和diff有一定的联系,在diff中得到两个文件的差异,而在patch中则是构建前后两个文档通过差异建立联系,也就是补丁档,可以一个文件通过补丁档得到另外一个文件。示例如下:

  1. 创建补丁档
    命令diff -Naur passwd.old passwd.new > passwd.patch
    diff创建补丁

  2. 使用patch打补丁

    # patch用法讲解
    patch -pN < patch_file #更新文件,将旧文件更新为新文件
    # -p 后面的数字表示取消几层目录
    patch -R < patch_file #还原文件,将新文件还原为之前的文件
    # -R 表示将新档案还原成就档案

    命令patch -p0 < passwd.patch即可将旧文件更新为新文件内容;
    命令patch -R < passwd.patch即可将新文件还原为旧文件内容;

参考资料

鸟叔的linux私房菜-第十一章:< http://linux.vbird.org/linux_basic/0330regularex.php >


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 qinzhtao@163.com

文章标题:档案对比工具

文章字数:662

本文作者:捌叁壹伍

发布时间:2019-10-30, 17:48:26

最后更新:2019-11-17, 17:39:02

原始链接:http://qzt8315.github.io/2019/10/30/档案对比工具/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏