当前位置: 首页 > Linux

教你一个Linux下比较文字的方法

时间:2023-04-07 01:07:47 Linux

在写代码的过程中,我们难免会对代码进行一些修改。但是,经常会出现修改后,不知道修改后和源文件有什么区别的情况。这里,我们需要一个文本比较工具来进行文本比较。有经验的程序员都知道Windows下有一个非常好用的文本比较工具——BeyondCompare。但是是付费软件,很多正规公司是不允许使用破解软件的。而且,它只能在Windows下使用,没有Linux版本。本文介绍的文本比对方法不需要任何软件,只需要一条Linux命令。学会了这个命令,妈妈再也不怕你比不了文字了。这个Linux命令就是diff命令。diff是Unix系统一个非常重要的工具程序。它用于比较两个文本文件之间的差异,是代码版本管理的基石之一。首先,让我们看一下它的基本命令格式。diff[OPTION]...FILES非常简单。但它有太多选择,让你怀疑生活。暂时先不管这么多,先学习一些最常用的吧,毕竟时间花在刀刃上。-b——忽略一行中空字符的区别(例如,“HelloWorld!”被认为与“HelloWorld!!”相同)-B——忽略空行-i——忽略大小写的区别-r——如果diff后面跟一个目录,则递归比较子目录下的文件。让我们看看如何详细比较文本。diff命令的输出格式有三种:(1)普通格式(normaldiff)(2)上下文格式(contextdiff)(3)组合格式(unifieddiff)我们通过例子来详细介绍这三种输出格式。比如我们现在有一个文件a.c,它的内容如下:现在我们复制一份,命名为b.c,将第3行的小写“hello”改为大写“HELLO”,如下:(1)普通格式正常格式下我们不用加任何选项,直接比较如下:diffa.cb.c结果如下:我们逐行解释一下上图的意思。逐行:3c3前3表示文件a.c中的第三行发生变化,最后3表示a.c通过变化成为b.c中的第三行。中间的c是具体的变化。c表示改变(change),其他类型包括d删除(delete),a增加(addition)。第二行:<你好世界!表示去掉a.c文件中第三行的内容,小于号表示去掉。第三行:------分隔线第四行:>HELLOworld!表示在b.c文件中增加第三行内容,大于号表示增加。(2)上下文格式由于普通格式的提示相对较少,我们无法快速定位到修改的地方,往往需要打开文件才能知道修改的细节。因此,为了提供更多信息,引入了上下文格式。其使用命令如下:diff-ca.cb.c其中,c表示context,表示上下文。上图中输出结果的具体含义如下:第1行和第2行分别表示修改前后的文件和更新时间。后面的1,4*表示a.c文件中显示的第1行到第4行的内容。helloworld前面的感叹号(!)表示该行被更改,如果删除该行,则为减号(-),如果添加该行,则为加号(+)。以下几行具有相似的含义。(3)Merge格式这种格式是普通格式和context格式的综合版本,这种格式也是gitdiff使用的格式。使用这种格式的命令是:diff-ua.cb.c上图中输出结果的详细含义如下:第一行和第二行分别表示修改前后的文件和更新时间。以下-helloworld!表示原文件a.c中的内容,+HELLOworld!表示b.c.中的内容除了以上三种格式外,还有一种更直观的并排格式。这种显示格式的命令格式如下:diffa.cb.c-y-W50这种格式是并行显示的,也很直观清晰。在第3行,有一个“|”符号,表示此行已更改。另外,如果前面是“<”,表示后面的文件比前面的文件少1行;如果是“>”,表示后面的文件比前面的文件多了1行。更多精彩内容,关注公众号良旭Linux,在公众号回复1024免费领取5T技术资料,包括:Linux、C/C++、Python、树莓派、嵌入式、Java、人工智能等。公众号回复加群,邀你加入达人如云技术交流群。最后,最近有很多朋友找我要一份Linux学习路线图,所以我结合自己的经验,利用业余时间熬夜一个月,整理了一本电子书。无论你是面试还是自我提升,相信都会对你有所帮助!免费送给大家,只求大家给我点个赞!电子书|LinuxDevelopmentLearningRoadmap也希望有小伙伴可以和我一起把这本电子书做得更完美!获得?希望老铁们来个三连击,让更多人看到这篇文章。推荐阅读:干货|程序员和高级架构师免费发送工件的必备资源|支持搜索的资源网站