教你一招Linux下文本比对方法

简介: 教你一招Linux下文本比对方法

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


有经验的程序员都知道,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,它的内容如下:


image.png


(1)正常格式


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


diff a.c b.c


执行完的结果如下:


image.png

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


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


image.png



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


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


(3)合并格式


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


diff -u a.c b.c



image.png


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


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


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


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





image.png


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

目录
相关文章
|
3月前
|
Ubuntu Linux 网络安全
在Linux上安装软件有多种方法
在Linux上安装软件有多种方法
142 64
|
2月前
|
Linux 开发工具
linux文本管理命令
本文档介绍了Linux系统中常用的文本处理命令,包括`echo`、`cat`、`head`、`tail`、`wc`、`less`、`grep`以及重定向符号的使用方法和练习题。此外,还详细讲解了VIM编辑器的特点、工作模式、常用快捷键和高级技巧,帮助用户高效地进行文本编辑和处理。
73 4
|
2月前
|
Linux Shell 数据库
文件查找是Linux用户日常工作的重要技能介绍了几种不常见的文件查找方法
文件查找是Linux用户日常工作的重要技能。本文介绍了几种不常见的文件查找方法,包括使用`find`和`column`组合、`locate`和`mlocate`快速查找、编写Shell脚本、使用现代工具`fd`、结合`grep`搜索文件内容,以及图形界面工具如`Gnome Search Tool`和`Albert`。这些方法能显著提升文件查找的效率和准确性。
76 2
|
3月前
|
运维 Linux
Linux查找占用的端口,并杀死进程的简单方法
通过上述步骤和命令,您能够迅速识别并根据实际情况管理Linux系统中占用特定端口的进程。为了获得更全面的服务器管理技巧和解决方案,提供了丰富的资源和专业服务,是您提升运维技能的理想选择。
130 1
|
3月前
|
运维 安全 Linux
Linux文件清空的五种方法总结分享
每种方法各有优势,选择最合适的一种或几种,可以极大提高您的工作效率。更多有关Linux系统管理的技巧与资源,欢迎访问,持续提升您的运维技能。
111 1
|
3月前
|
Linux 数据安全/隐私保护 索引
linux inode索引节点使用率100% 解决+hustoj忘记密码+最新MDK注册方法
linux inode索引节点使用率100% 解决+hustoj忘记密码+最新MDK注册方法
59 1
|
3月前
|
监控 安全 Linux
使用NRPE和Nagios监控Linux系统资源的方法
通过遵循以上步骤,可以有效地使用NRPE和Nagios监控Linux系统资源,确保系统运行稳定,并及时响应任何潜在的问题。这种方法提供了高度的可定制性和灵活性,适用于从小型环境到大型分布式系统的各种监控需求。
73 2
|
4月前
|
Linux Shell
10-10|linux命令查询 关键字在文本中出现的行数
10-10|linux命令查询 关键字在文本中出现的行数
|
5月前
|
Linux
Linux 系列之 在一个文本中查找指定的数据
文章介绍了在Linux命令行中使用文本搜索功能快速查找指定内容的方法,并提供了按`n`键查找下一个匹配项的技巧。
Linux 系列之 在一个文本中查找指定的数据
|
5月前
|
Ubuntu Linux 虚拟化
安装Windows Linux 子系统的方法:适用于windows 11 版本
本文提供了在Windows 11系统上安装Linux子系统(WSL)的详细步骤,包括启用子系统和虚拟化功能、从Microsoft Store安装Linux发行版、设置WSL默认版本、安装WSL2补丁,以及完成Ubuntu的首次安装设置。
1499 2