比较两个文件并应用差异
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
您可以使用diff
's output to create a patch file。
diff original_file file_with_new_lines > patch_file
您可以编辑 patch_file
以仅保留添加的部分,因为您只需要新行。
然后就可以使用patch
命令应用这个补丁文件了:
patch original_file patch_file
在基于 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
您可以使用
diff
's output to create a patch file。diff original_file file_with_new_lines > patch_file
您可以编辑
patch_file
以仅保留添加的部分,因为您只需要新行。然后就可以使用
patch
命令应用这个补丁文件了:patch original_file patch_file