本指南将向您展示如何使用Linux比较两个文件并将其差异输出到屏幕或文件。
您无需安装任何特殊软件即可使用Linux比较文件,但您需要知道如何打开终端窗口。
正如链接指南所示,有许多方法可以使用Linux打开终端窗口。最简单的是同时按下CTRL,ALT和T键。
创建要比较的文件
为了遵循本指南,创建一个名为“file1”的文件并输入以下文本:
站立在墙壁上的10个绿色瓶
站立在墙壁上的10个绿色瓶
如果一个绿色的瓶子不小心掉下来
墙上会有9个绿色的瓶子
您可以按照以下说明创建文件:
-
通过键入以下命令打开文件:nano file1
-
在nano编辑器中键入文本
-
按CTRL和O保存文件
-
按CTRL和X退出文件
现在创建另一个名为“file2”的文件并输入以下文本:
站立在墙壁上的10个绿色瓶
如果1个绿色瓶子应该意外掉落
墙上有9个绿色的瓶子
您可以按照以下说明创建文件:
-
键入以下命令打开文件:nano file2
-
在nano编辑器中键入文本
-
按CTRL和O保存文件
-
按CTRL和X退出文件
如何使用Linux比较两个文件
Linux中用于显示2个文件之间差异的命令称为diff命令。
diff命令的最简单形式如下:
diff file1 file2
如果文件相同,那么使用此命令时将没有输出,但是,由于存在差异,您将看到类似于以下内容的输出:
2,4c2,3
<10个绿色的瓶子站在墙上
<如果一个绿色瓶子意外掉落
<墙上会有9个绿色的瓶子
…
>如果1个绿色瓶子意外掉落
>墙上有9个绿色的瓶子
最初,输出可能看起来令人困惑,但一旦理解了术语,它就相当合乎逻辑。
用自己的眼睛可以看出两个文件之间的差异如下:
- 第二个文件只有三行,而第一个文件有4行。
- 第二个文件在第三行显示“1个绿色瓶子”,而第一个文件说“一个绿色瓶子”
- 第二个文件在最后一行上写着“有”而不是“有用”
diff命令的输出显示第一个文件的第2行和第4行与第二个文件的第2行和第3行之间存在差异。
然后,它会列出第一个文件中2到4行,然后是第二个文件中的2个不同行。
如何显示文件是否不同
如果您只是想知道文件是否不同而且您对哪些行不同感兴趣,则可以运行以下命令:
diff -q file1 file2
如果文件不同,将显示以下内容:
文件file1和file2不同
如果文件相同则不显示任何内容。
如果文件相同,如何显示消息
当您运行命令时,您想知道它已正常工作,因此您希望在运行diff命令时显示消息,无论文件是相同还是不同
要使用diff命令实现此要求,可以使用以下命令:
diff -s file1 file2
现在,如果文件相同,您将收到以下消息:
如何产生差异并存
如果存在很多差异,那么很快就会混淆两个文件之间的差异。
您可以更改diff命令的输出,以便结果并排显示。为此,请运行以下命令:
diff -y file1 file2
该文件的输出使用|用于显示两行之间差异的符号,a <表示已删除的行,而>>表示已追加的行。
有趣的是,如果您使用我们的演示文件运行命令,那么除了文件2的最后一行(将显示为已删除)之外,所有行都将显示为不同。
限制列宽
当并排比较两个文件时,如果文件有很多文本列,则很难读取。
要限制多个列,请使用以下命令:
比较文件时如何忽略大小写差异
如果要比较两个文件但不关心两个文件之间的字母大小是否相同,则可以使用以下命令:
如何忽略一行末尾的尾随空格
如果在比较文件时发现差异很大,并且差异是由行尾的空格引起的,则可以通过运行以下命令将这些差异省略为显示为更改:
如何忽略两个文件之间的所有空白区别
如果您只对文件中的文本感兴趣,并且不关心一个文件中是否有多个空格,则可以使用以下命令:
比较两个文件时如何忽略空行
如果您不关心一个文件中是否有额外的空行,那么您可以使用以下命令比较这些文件:
摘要
您可以通过阅读diff命令的手册找到更多信息。
男人差异
diff命令可以以最简单的形式使用,只显示2个文件之间的差异,但您也可以使用它来创建diff文件,作为修补策略的一部分,如Linux patch命令的本指南所示。
您可以用来比较文件的另一个命令是cmp命令,如本指南所示。这会逐字节地比较文件。