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

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

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

这个Linux命令就是diff命令。

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

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

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

-b —— 忽略一行中的空字符的区别(例如“Hello World!” 与 “Hello World!!”认为是一样的) -B —— 忽略空白行 -i —— 忽略大小写的不同 -r —— 如果diff后面接的目录时,会递归比较子目录中的文件不同

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

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

(1)正常格式(normal diff) (2)上下文格式(context diff) (3)合并格式(unified diff)

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

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

(1)正常格式

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

diff a.c b.c
执行完的结果如下:

img

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

行一行: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,即上下文的意思。

img

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

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

(3)合并格式

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

diff -u a.c b.c
img

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

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

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

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

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

更多精彩内容,请关注公众号良许Linux,公众内回复1024可免费获得5T技术资料,包括:Linux,C/C++,Python,树莓派,嵌入式,Java,人工智能,等等。公众号内回复进群,邀请您进高手如云技术交流群。

教你一招Linux下文本比对方法相关推荐

  1. linux apr防火墙,教你一招:解决linux下arp攻击的方法

    一般Windows用户可以使用antiArp防火墙,但是有些计算专业的朋友们由于工作或其他原因使用的是linux系统,那么linux下arp攻击怎么办呢?下面就是一位高手解决linux下arp攻击的方 ...

  2. 教你如何在linux 下批量卸载

    教你如何在linux 下批量卸载 最 近本来想在linux 下配置 JDK 6.0 用来开发java,然后遇到很多麻烦,一开始的时候屁颠屁颠的到SUN的网站去下载个 JRE 的bin 文件,这个文件比 ...

  3. linux下文本模式不能登录,图形可以登录

    问题描述 : 输入用户名密码后弹回,重复提示用户输入行,表示不登陆!!! 问题出现前的操作 : 在图形界面将启动配置文件中的启动模式由runlevel 5 改为 3,然后重启电脑. 解决方式 : 在项 ...

  4. 手把手教你如下在Linux下如何写一个C语言代码,编译并运行

    文章目录 手把手教你如下在Linux下如何写一个C语言代码,编译并运行 打开Ubuntu终端 创建 helloworld.c 编译C文件 手把手教你如下在Linux下如何写一个C语言代码,编译并运行 ...

  5. 教你9招最有效防电脑辐射方法

    教你9招最有效防电脑辐射方法 第一招:在电脑旁放上几盆XXXXX掌,它可以有效地吸收辐射: 第二招:还对于生活紧张而忙碌的人群来说,抵御电脑辐射最简单的办法就 是在每天上午喝2至3杯的绿茶,吃一个橘子 ...

  6. 公众号如何运营?教你几招超实用的公众号运营方法

    现在几乎大多数的企业和品牌都拥有自己的公众号,但是想要将公众号运营起来真的不是一件易事!任何工作都讲究方式和方法,公众号运营也是如此,公众号如何运营?接下来伯乐网络传媒教你几招超实用的公众号运营方法! ...

  7. Windows 修改键盘映射(附带Linux下Ubuntu的修改方法)

    Windows 修改键盘映射(附带Linux下Ubuntu的修改方法) 一.简述        通过修改键盘映射关系可以改变按键的功能.如:       1) A键损坏,使用B键代替.       2 ...

  8. 学计算机的男孩子怎么追女孩子,男生想要追到女孩子,教你几招,用这几个方法,基本上就十拿九稳...

    男生想要追到女孩子,教你几招,用这几个方法,基本上就十拿九稳 谈恋爱之前都是存在一个过渡期的,两个人在谈恋爱之前都是处于暧昧期的,最后就转变成情侣关系的.我们都知道对于许多人来说,去追自己喜欢的人是一 ...

  9. linux系统rz,rz:Linux下rz命令使用方法介绍

    今天来聊聊一篇关于rz:Linux下rz命令使用方法介绍的文章,现在就为大家来简单介绍下rz:Linux下rz命令使用方法介绍,希望对各位小伙伴们有所帮助. rz命令可以批量上传文件,当然也可上传单个 ...

最新文章

  1. Spring Transactional还能导致生产事故?
  2. 给 Javascript 加上面向对象的属性:Class.js
  3. php统计变量的位数,php实现统计二进制中1的个数算法示例
  4. phalcon: 缓存片段,文件缓存,memcache缓存
  5. java 判断子类_java判断class是否是某个类的子类或父类
  6. 大家整齐的qipaifans朗读声忽然乱了
  7. vue上传图片文件到服务器,vue如何将quill图片上传到服务器
  8. php xml扩展,php-SimpleXML,请不要扩展实体
  9. Kubernetes详解(二十六)——金丝雀发布
  10. Python Django 初试手记
  11. Atitit 组织架构的如何划分 划分方法attilax大总结
  12. 最新PHP云购源码+带机器人/控制/教程/去授权说明
  13. 2018 6月底阿里、网易面试经历简单回忆
  14. Weekly Recap!相对不平淡的行情 相对冷淡的 DeFi 市场
  15. 大数据比手势锁靠谱?支付宝回应质疑
  16. 招行首发芭比娃娃MP3
  17. log4j日志文件默认存放路径
  18. route----添加路由的方法
  19. 《明日世界》电驴下载放出
  20. 作为一名合格的JAVA架构师需要点亮哪些技能树?

热门文章

  1. 算法工程师每天都在干嘛?
  2. “地图易”数据采集工具介绍——地图数据采集神器
  3. 经纬恒润2023提前批秋招面试凉经
  4. IM即时通讯开发如何解决大量离线消息导致客户端卡顿的
  5. 渗透武器库--burpSuite实战(最强web安全工具,没有之一)
  6. iOS 官网文档 地图周边关键字搜索
  7. 用Excel函数制作迷你图?这技能简直不要太酷炫!| 薪技巧
  8. 初学者学习编程,如何训练自己的编程思维,资深程序员这样建议
  9. 主语---谓语---宾语---宾语补足语
  10. Chrome书签整理