Как использовать diff3
вместе с ed
? Моя попытка ниже не соответствует результату diff3 --merge
, поэтому я, должно быть, делаю что-то не так.
Контекст: я портировал утилиту OpenBSD diff3prog.c для использования в BusyBox, у которого есть diff
и ed
.
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
Единственное место, где я нашел это упоминание, это какое-то непонятное mkssoftware.com/docs/man1/diff3.1.asp
(первоначально я разместил это в комментарии выше. никто не добавил никакого дополнительного контекста, но проблема решена, поэтому я также добавляю это как ответ)
Кажется, что в выводе diff3
отсутствует команда w
ed
. Итак, чтобы получить ожидаемый результат, нужно (diff3 -E $f1 $f2 $f3; echo w) | ed $f1
.
Кажется, что в выводе
diff3
отсутствует командаw
ed. Итак, чтобы получить ожидаемый результат, нужно(diff3 -E $f1 $f2 $f3; echo w) | ed $f1
. Интересно, почему это не упоминается в документахdiff3
? (не могу найти...)