0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux操作环境:diff实现文本比对方法

如意 来源:良许Linux微信公众号 作者:良许 2020-09-16 16:12 次阅读

我们在写代码的过程中,免不了会对代码进行一些修修改改。但经常会出现改着改着,就不知道改完后与源文件的差异是怎样的。这里,我们就需要一个文本比对工具来进行文本比对。

有经验的程序员都知道,Windows下有个很好用的文本比对工具——BeyondCompare。但它是收费软件,很多正规的公司是不允许使用破解软件的。而且,它也只能在Windows下使用,没有Linux版本。

本文所介绍的文本比对方法,无需任何软件,只需一个Linux命令。学会这个命令,就再也不怕你不会文本比对了。

这个Linux命令就是diff命令。

diff是Unix系统的一个很重要的工具程序。它用来比较两个文本文件的差异,是代码版本管理的基石之一。

首先我们来看它的基本命令格式。

diff [OPTION]。.. FILES

很简单吧。不过它的选项相当多,多到你怀疑人生。我们暂且不管那么多,先学一些最常用的,毕竟时间要花在刀刃上。

-b —— 忽略一行中的空字符的区别(例如“Hello World!” 与 “Hello World!!”认为是一样的)

-B —— 忽略空白行

-i —— 忽略大小写的不同

-r —— 如果diff后面接的目录时,会递归比较子目录中的文件不同

我们再来具体看看如何进行文本比较。

diff命令的输出格式有三种:

正常格式(normal diff)

上下文格式(context diff)

合并格式(unified diff)

我们通过实例详细介绍这三种输出格式。比如我们现在有个文件a.c,它的内容如下:

Linux操作环境:diff实现文本比对方法

现在我们复制一份,命名为b.c,并将第3行小写的“hello”改为大写“HELLO“,如下:

Linux操作环境:diff实现文本比对方法

1. 正常格式

正常格式下我们无需加任何选项,直接如下比对就好:

diff a.c b.c

执行完的结果如下:

Linux操作环境:diff实现文本比对方法

我们一行一行来解释上图的含义。

第一行:3c3

第一个3表示文件a.c中第3行有变化,后面的3表示a.c通过变化成为b.c中的第3行。中间的c就是具体的变化了。c表示改变(change),其它类型还有d删除(delete),a增加(addition)。

第二行:《 hello world!

表示a.c文件中去除第3行的内容,其中小于号表示去除。

第三行:------

分隔线

第四行:》 HELLO world!

表示b.c文件中增加第3行的内容,其中大于号表示增加。

2. 上下文格式

由于在正常格式下,提示信息比较少,我们无法快速定位所修改的地方,经常需要打开文件才知道修改细节。所以,为了给出更多的信息,引入了上下文格式。它的使用命令如下:

diff -c a.c b.c

其中,c表示context,即上下文的意思。

Linux操作环境:diff实现文本比对方法

上图的输出结果的具体含义如下:

第1行和第2行表示修改前及修改后的文件及更新时间。下面的 1,4 *表示a.c文件显示的从第1行开始到第4行为止的内容。hello world前的叹号(!)表示该行有改动,如果该行被删除,则为减号(-),如果该行被增加,则为加号(+)。后面几行的含义类似。

3. 合并格式

这种格式是正常格式与上下文格式的综合版,同时这种格式也是git diff所采用的格式。使用这种格式的命令是:

diff -u a.c b.c

Linux操作环境:diff实现文本比对方法

上图的输出结果详细含义如下:

第1行和第2行表示修改前及修改后的文件及更新时间。后面的-hello world!表示原文件a.c里的内容,+HELLO world!表示b.c里的内容。

除了以上三种格式外,还有另外一直更直观的方式——并排格式。这种显示格式的命令格式如下:

diff a.c b.c -y -W 50

Linux操作环境:diff实现文本比对方法

这种格式就是以并列的格式进行显示,也很直观明了。第3行里,有个“|”符号,表示这行有更改。另外,如果前面是“《”,表示后面文件比前面文件少了1行内容;如果是”》“,表示后面文件比前面文件多了1行内容。
责编AJX

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11092

    浏览量

    207630
  • 文本
    +关注

    关注

    0

    文章

    118

    浏览量

    17008
  • 操作环境
    +关注

    关注

    0

    文章

    9

    浏览量

    7045
收藏 人收藏

    评论

    相关推荐

    详解Linux上两个超有用重要的文本操作命令

    Linux通过大量的命令使得 文本 操作和处理非常容易。像 tr 和 fmt 这样的命令行工具可以帮助您从终端更改、格式化和修改 文本文件。
    发表于11-11 09:14 475次阅读

    Linux操作系统交叉编译环境的建立方法

    基于 linux 操作系统的应用开发 环境一般是由目标系统硬件(开发板)和宿主PC机所构成。目标硬件开发板用于运行 操作系统和系统应用软件,而目标板所用到的
    发表于07-15 15:05

    Linux中TCP的通信过程以及实现方法

    【嵌入式】Web1. 操作内容2. 操作步骤1. 操作内容理解 Linux中TCP的通信过程以及 实现 方法
    发表于12-16 08:01

    linux文本编辑器工具下载

    linux 文本编辑工具:VIM是优秀的开源 文本编辑器,是 Linux/UNIX用户非常常用的 文本编辑工具.
    发表于06-02 22:30 31次下载

    插入式涡街流量计比对方法探讨

    插入式涡街流量计 比对方法探讨Investigation on a Method of Intercomparison of Insertion Vortex Flowmeter二岛 ‘ 蕊(中石化金陵分公司计童站,南京210033)摘要简单介绍了插入式涡街流量
    发表于10-18 14:34 16次下载

    基于Linux平台DCS操作站的实现

    介绍在INFI-90 系统中用 Linux 实现DCS 操作站的 方法、原理及实施过程。关键词: Linux;DCS;X Window;
    发表于08-31 10:32 16次下载

    linux操作系统交叉编译环境的建立方法

    基于 linux 操作系统的应用开发 环境一般是由目标系统硬件(开发板)和宿主PC机所构成。目标硬件开发板用于运行 操作系统和系统应用软件,而目标板所用到的
    发表于09-14 17:45 1052次阅读

    LINUX环境下CLIPS动态链接库的实现方法

    LINUX 环境下,为了简便、快捷地制作出CLIPS动态链接库,本文采用了CNU AUTOTOOLS把CLIPS嵌入式高级语言编译成动态链接库的 实现 方法,重点研究如何编写配置信息,利用
    发表于04-14 21:18 30次下载

    【新专利介绍】三表位电能表自助比对装置及其比对方法

    今天为大家介绍一项国家发明授权专利——三表位电能表自助 比对装置及其 比对方法。该专利由贵州长征电器成套有限公司申请,并于2018年2月9日获得授权公告。
    发表于07-10 15:01 759次阅读

    用于宽频电能表计量运行误差的实时比对方法

    今天为大家介绍一项国家发明授权专利——一种用于宽频电能表计量运行误差的实时 比对方法。该专利由国家电网公司、江苏省电力公司、江苏省电力公司电力科学研究院、福建亿榕信息技术有限公司申请,并于2017年8月8日获得授权公告。
    发表于01-26 09:58 1001次阅读
    用于宽频电能表计量运行误差的实时<b class='flag-5'>比对方法</b>

    简述Linux文本查看命令

    Linux常用命令中,除了 cat 还有很多其他用于 文本查看的命令。
    的头像 发表于08-11 11:17 3413次阅读

    如何在Linux环境实现Python环境的搭建

    本文档的主要内容详细介绍的是如何在 Linux 环境实现Python 环境的搭建。
    发表于08-24 12:12 14次下载
    如何在<b class='flag-5'>Linux</b><b class='flag-5'>环境</b>下<b class='flag-5'>实现</b>Python<b class='flag-5'>环境</b>的搭建

    linux系统中如何创建文本菜单

    当使用 Linux系统时,最常见的Shell脚本交互类型是应用菜单( 文本菜单), 文本菜单的核心是case命令。 H. L.使用case命令完成菜单交互。 让我们在下面创建一个简单的脚本。 在 Li
    发表于09-25 15:45 1094次阅读

    使用CAM350比对Gerber基本操作的教程

    本文档的主要内容详细介绍的是使用CAM350 比对Gerber基本 操作的教程
    发表于10-22 08:00 0次下载
    使用CAM350<b class='flag-5'>比对</b>Gerber基本<b class='flag-5'>操作</b>的教程

    红外线测温仪自校准误差比对方法的研究

    德赢Vwin官网 网站提供《红外线测温仪自校准误差 比对方法的研究.pdf》资料免费下载
    发表于10-24 14:11 0次下载
    红外线测温仪自校准误差<b class='flag-5'>比对方法</b>的研究