比较两个文件并应用差异

Comparing two files and applying the differences

在基于 Linux 的系统上,我可以轻松比较两个文件,例如:

diff file1.txt file2.txt

...看看它们之间的区别。

如果我想获取 file2.txt 独有的所有行并将它们应用于 file1.txt,这样 file1.txt 现在将包含它拥有的所有内容 + 来自 [=11 的行=] 它以前没有?有简单的方法吗?

如果您不介意将排序后的差异附加到您的文件中,您可以使用 comm:

cat file1.txt <(comm -13 <(sort f1.txt) <(sort f2.txt)) > file1.txt.patched

comm -13 <(sort f1.txt) <(sort f2.txt) | cat file1.txt - > file1.txt.patched

这会将唯一的行从 file2.txt 附加到 file1.txt。

使用patch

  1. 您可以使用diff's output to create a patch file

    diff original_file file_with_new_lines > patch_file
    
  2. 您可以编辑 patch_file 以仅保留添加的部分,因为您只需要新行。

  3. 然后就可以使用patch命令应用这个补丁文件了:

    patch original_file patch_file