比较两个文件并应用差异

时间:2018-07-18 20:18:42

标签: linux bash shell diff

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

diff file1.txt file2.txt

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

如果我想将file2.txt唯一的所有行都应用到file1.txt,以便file1.txt现在将包含它从file2.txt开始的所有行,该怎么办?以前没有?有简单的方法吗?

2 个答案:

答案 0 :(得分:3)

使用patch

  1. 您可以使用diff的输出来创建patch file

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

  3. 然后您可以使用patch命令来应用此补丁文件:

    patch original_file patch_file
    

答案 1 :(得分:0)

如果您不介意将已排序的差异添加到文件中,则可以使用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。