繁体   English   中英

使用linux命令比较两个文件

[英]Compare two files using linux commands

我想比较两个无序但相似的数据文件。 在Linux中是否可以这样做。 是的,如何?

例如,我的第一个文件的内容是:

a=5 b=10 c=78
a=8 b=11 c=75
a=8 b=11 c=54

第二个文件的内容是:

a=8 b=11 c=75
a=5 b=10 c=78

现在,要查找文件1中存在但文件2中不存在的行,反之亦然。 也就是说,我想找到两个文件之间的区别。 是否可以使用Linux命令(例如grep等)来执行此操作。这两个文件之间的区别是:a = 8 b = 11 c = 54

使用diff

首先,对两个文件进行排序:

sort a > a.sorted
sort b > b.sorted

然后将diff应用于它们:

myaut@panther:/tmp/files> diff -u a.sorted b.sorted 
--- a.sorted    2015-02-28 20:01:46.066305657 +0300
+++ b.sorted    2015-02-28 20:01:49.299210198 +0300
@@ -1,3 +1,2 @@
a=5 b=10 c=78
a=8 b=11 c=75
-a=9 b=12 c=54

diff输出中的每一行都可以在-之前加上+号。 在此示例中:

  • -表示文件b缺少该标记的行,但存在于a
  • +如果在存在线将示出b ,但不存在于a

首先按照myaut的说明对文件进行排序,并使用sdiff,它将在屏幕的2个平移中显示两个文件,并且具有差异的行将用characher | 在两个锅之间的分隔空间中。

cat file1 | sort > file1_sorted
cat file2 | sort > file2_sorted

sdiff file1_sorted file2_sorted | more

如果安装了vim,请尝试:

vim -f filename1文件名2

这将以GUI形式(Visualize)向您显示两个文件之间的差异。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM