Linux下如何比对文本

78次阅读
没有评论

共计 1495 个字符,预计需要花费 4 分钟才能阅读完成。

这篇文章将为大家详细讲解有关 Linux 下如何比对文本,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

这个 Linux 命令就是 diff 命令。

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

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

diff [OPTION]... FILES

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

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

-B mdash; mdash; 忽略空白行

-i   mdash; mdash; 忽略大小写的不同

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

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

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

正常格式(normal diff)

上下文格式(context diff)

合并格式(unified diff)

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

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

1. 正常格式

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

diff a.c b.c

执行完的结果如下:

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

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

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

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

3. 合并格式

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

diff -u a.c b.c

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

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

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

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

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

关于“Linux 下如何比对文本”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计1495字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)