服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - 教你一招实现Linux中的文本比对

教你一招实现Linux中的文本比对

2022-08-04 08:33技术小能手 Linux

这篇文章主要给阿加介绍了关于Linux下文本比对的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

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

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

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

这个linux命令就是diff命令。

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

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

?
1
diff [option]... files

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

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

-b —— 忽略空白行

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

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

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

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

(1)正常格式(normal diff)

(2)上下文格式(context diff)

(3)合并格式(unified diff)

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

教你一招实现Linux中的文本比对

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

教你一招实现Linux中的文本比对

(1)正常格式

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

教你一招实现Linux中的文本比对

执行完的结果如下:

教你一招实现Linux中的文本比对

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

行一行: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)上下文格式

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

?
1
diff -c a.c b.c

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

教你一招实现Linux中的文本比对

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

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

(3)合并格式

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

?
1
diff -u a.c b.c

教你一招实现Linux中的文本比对

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

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

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

教你一招实现Linux中的文本比对

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。

原文链接:https://yq.aliyun.com/articles/663313

延伸 · 阅读

精彩推荐
  • Linux详解Linux上svn命令行批量操作

    详解Linux上svn命令行批量操作

    这篇文章主要介绍了详解Linux上svn命令行批量操作的相关资料,linux上的svn命令行批量添加或删除文件,需要的朋友可以参考下...

    阿信sxq10872022-02-12
  • Linuxlinux中install命令和cp命令的使用与区别

    linux中install命令和cp命令的使用与区别

    相信大家都知道linux中的命令Install和cp类似,都可以将文件/目录拷贝到指定的地点。下面这篇文章就详细介绍了linux中install命令和cp命令的介绍与区别。有...

    Lingxian_Kong12052021-12-22
  • Linuxlinux系统下pwd命令用法详解

    linux系统下pwd命令用法详解

    linux上pwd命令是Print Working Directory的缩写,基本功能是打印当前的工作目录,但是也有一些特殊的用法,本文总结关于pwd的使用方法 ...

    linux命令大全7402019-11-20
  • LinuxLinux下大量SYN_SENT连接问题的解决方法

    Linux下大量SYN_SENT连接问题的解决方法

    这篇文章主要介绍了Linux下大量SYN_SENT连接问题的解决方法,需要的朋友可以参考下...

    Linux教程网10682021-10-22
  • Linuxlinux安装apache过程中注意的问题

    linux安装apache过程中注意的问题

    这篇文章主要为大家介绍了linux安装apache过程中注意的问题,帮助大家进行顺利安装,感兴趣的小伙伴们可以参考一下...

    Linux教程网7782021-11-01
  • LinuxLinux网络监控工具大点兵

    Linux网络监控工具大点兵

    网络通讯Linux中最基本基本的功能之一,很多是时候我们需要获取Linux的网络信息。Linux中存在很多网络监控工具,本文就给大家介绍一下,Linux常见的网络...

    虫虫搜奇5492020-11-17
  • LinuxLinux系统下禁止非WHEEL用户使用SU命命的两种实现方法

    Linux系统下禁止非WHEEL用户使用SU命命的两种实现方法

    一般用户通过执行“su -”命令就可以系统进行管理员级别的配置。为了更进一步加强系统的安全性,有必要建立一个管理员的组,只允许这个组的用户来执...

    Linux教程网5142019-10-30
  • LinuxLinux虚拟服务器 LVS的三种负载均衡方式比较

    Linux虚拟服务器 LVS的三种负载均衡方式比较

    这篇文章主要为大家介绍了LVS三种负载均衡方式的比较,什么是lvs?其实就是Linux虚拟服务器,是一个虚拟的服务器集群系统。LVS三种负载均衡分别是VS/N...

    Linux教程网6562019-11-01