Вручную объединить два файла с помощью diff
Я хотел бы объединить два файла, выполнив следующие действия:
- выведите разницу из двух файлов во временный файл и
- вручную выберите строки, которые я хочу скопировать / сохранить.
проблема здесь в том, что diff -u
дает мне только файловые строки контекста, в то время как я хочу вывести весь файл в унифицированном формате.
есть ли способ, которым diff может это сделать?
4 ответов
"Я хочу вывести весь файл в унифицированном формате. Есть ли способ, которым diff может это сделать?"
да.
diff -U 9999999 file1.txt file2.txt > diff.txt
Это должно работать, если ваши файлы имеют длину менее 10 миллионов строк.
один вариант, который может соответствовать счет для вас,
sdiff
: side-by-side diff файлов.
sdiff -o merged.file left.file right.file
как только там, он подскажет вам, какие строки вы хотите сохранить из какого файла. Хит ?
а то enter
за небольшую помощь. Также man sdiff
С подробным товарами.
(в моем дистрибутиве они поставляются в упаковке "diffutils" [fedora, centos])
Если вам нужно автоматизировать процесс, то вы могли хотеть попробовать util merge
, который будет отмечать конфликты в файлах. Тем не менее, это может поставить вас на место.
простой ответ заключается в использовании флага-D для объединения файлов и окружения различий с помощью операторов C style #ifdef.
из документации:
-D NAME --ifdef=NAME
Output merged file to show `#ifdef NAME' diffs.
Вы можете использовать его следующим образом:
$ diff -D NEWSTUFF file1 file2 > merged_file
обычно я просто открываю объединенный файл в редакторе и разрешаю конфликты слияния вручную.
вы также можете использовать опции для вывода скрипта ed и т. д.