[英]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.