首页 > 解决方案 > 如何在 ed 中使用 diff3

问题描述

如何diff3搭配使用ed?我在下面的尝试与输出不匹配diff3 --merge,所以我一定做错了什么。

背景:我已经移植了 OpenBSD 的diff3prog.c实用程序以在 BusyBox 中使用,它具有diffed.

cat <<- EOF > parent.txt
1
2
3
EOF

cat <<- EOF > ours.txt
1
2
3
EOF

cat <<- EOF > theirs.txt
1
2
3
4
EOF

f1=ours.txt
f2=parent.txt
f3=theirs.txt

diff3 --merge $f1 $f2 $f3 > merged_good.txt

diff3 -E $f1 $f2 $f3 | ed $f1
#prints:
#6
#?

mv $f1 merged_bad.txt
cat merged_good.txt
#prints:
#1
#2
#3
#4

cat merged_bad.txt
#prints:
#1
#2
#3

标签: diffeddiff3

解决方案


(最初我在上面的评论中发布了这个。没有人添加任何进一步的上下文,但问题已经解决,所以我也将其添加为答案)

似乎diff3输出错过了w ed命令。因此,要获得预期的输出,应该(diff3 -E $f1 $f2 $f3; echo w) | ed $f1.


推荐阅读