21

我想找到两个文件之间的差异,然后只将差异放在第三个文件中。我看到了使用 awk、diff 和 comm 的不同方法。还有吗?

例如。逐行比较两个文件并在另一个文件中生成差异

例如。复制unix中两个文件之间的差异

对于以下每种情况,我需要知道哪种方法是查找所有差异并将它们列出在文件中的最快方法 -

Case 1 - file2 = file1 + extra text appended.
Case 2 - file2 and file1 are different.
4

4 回答 4

51

你可以试试。。

comm -13 <(sort file1) <(sort file2) > file3

或者

grep -Fxvf file1 file2 > file3

或者

diff file1 file2 | grep "<" | sed 's/^<//g'  > file3

或者

join -v 2 <(sort file1) <(sort file2) > file3
于 2013-08-05T23:54:17.080 回答
16

另外的选择:

sort file1 file2 | uniq -u > file3

如果您只想查看重复条目,请使用“uniq -d”选项:

sort file1 file2 | uniq -d > file3
于 2014-04-29T15:37:33.620 回答
1

您也可以尝试包含 md5-hash-sums 或类似的东西来确定是否有任何差异。然后,只比较具有不同哈希的文件......

于 2013-08-07T13:01:23.523 回答
0

这将很快奏效:

案例 1 - File2 = File1 + 附加的额外文本。

grep -Fxvf File2.txt File1.txt >> File3.txt

文件 1:80 行 文件 2:100 行 文件 3:20 行

于 2015-04-17T08:58:08.127 回答