我想通过执行以下操作合并两个文件:
这里的问题是diff -u
只给我一个文件行的上下文,而我想以统一的格式输出整个文件。
diff有什么办法可以做到这一点吗?
答案 0 :(得分:12)
一个可能适合您的账单,
sdiff
:文件的并排差异。
sdiff -o merged.file left.file right.file
在那里,它会提示您要从哪个文件中保留哪些行。点击?
然后enter
获取一些帮助。还man sdiff
包含详细商品。
(在我的发行版中,这些包装在“diffutils”软件包中[fedora,centos])
如果您需要自动执行该过程,您可能需要尝试使用util merge
,它将标记文件中的冲突。但是,这可能会让你回到原点。
答案 1 :(得分:7)
“我想以统一的格式输出整个文件。有什么方法可以做到这一点吗?”
是
diff -U 9999999 file1.txt file2.txt > diff.txt
如果您的文件长度少于1000万行,这应该可以。
答案 2 :(得分:2)
您可以使用 -
将两个文件合并/合并为diffdiff --line-format %L file1 file2
答案 3 :(得分:0)
简单的答案是使用-D标志合并文件并用C风格#ifdef语句包围差异。
来自文档:
-D NAME --ifdef=NAME
Output merged file to show `#ifdef NAME' diffs.
您可以按如下方式使用它:
$ diff -D NEWSTUFF file1 file2 > merged_file
我通常只需在编辑器中打开合并文件并手动解决合并冲突。
您还可以使用选项输出ed脚本等。
答案 4 :(得分:0)
如果您是emacs用户,则可以使用“ emerge”工具直接在emacs中执行此操作:
https://www.gnu.org/software/emacs/manual/html_node/emacs/Emerge.html
发出M-x emerge-files
将打开一个交互式提示,其中包含文件A,B和合并文件的视图,以允许选择文件A和B之间不同的文本,将部分A插入到B中,等等。 / p>