Manuelles Zusammenführen zweier Dateien mit diff

8

Ich möchte zwei Dateien zusammenführen, indem Sie Folgendes tun:

  1. Ausgabe der Diff der beiden Dateien in eine temporäre Datei und
  2. Wählen Sie manuell die Zeilen aus, die kopiert / gespeichert werden sollen.

Das Problem hier ist, dass diff -u mir nur eine Dateizeile mit Kontext gibt, während ich die gesamte Datei in einem einheitlichen Format ausgeben möchte.

Gibt es eine Möglichkeit, wie diff das machen kann?

    
Alex 03.06.2013, 17:02
quelle

4 Antworten

6

"Ich möchte die gesamte Datei in einem einheitlichen Format ausgeben. Gibt es eine Möglichkeit, wie diff das machen kann?"

Ja.

%Vor%

Dies sollte funktionieren, vorausgesetzt Ihre Dateien sind weniger als 10 Millionen Zeilen lang.

    
Markku K. 03.06.2013, 17:12
quelle
10

Eine Option, die für Sie passen könnte,

sdiff : Side-by-Side-Unterschiede von Dateien.

sdiff -o merged.file left.file right.file

Dort werden Sie gefragt, welche Zeilen Sie aus welcher Datei behalten möchten. Hit ? und dann enter für ein wenig Hilfe. Auch man sdiff mit den detaillierten Waren.

(In meiner Distribution kommen diese im Paket "diffutils" [fedora, centos])

Wenn Sie den Prozess automatisieren müssen, sollten Sie util merge ausprobieren, um Konflikte in den Dateien zu erkennen. Das könnte Sie jedoch auf Platz eins zurückführen.

    
dougBTV 03.06.2013 17:14
quelle
0

Die einfache Antwort besteht darin, die -D-Markierung zu verwenden, um die Dateien zusammenzuführen und die Unterschiede mit C-Style #ifdef-Anweisungen zu umgeben.

Aus der Dokumentation:

%Vor%

Sie können es wie folgt verwenden:

%Vor%

Normalerweise öffne ich dann die zusammengeführte Datei in einem Editor und lösche die Konflikte manuell.

Sie können auch Optionen verwenden, um ein Ed-Skript usw. auszugeben.

    
Brendon Whateley 14.09.2016 19:06
quelle
0

Sie können die beiden Dateien mit diff zusammenführen / kombinieren -

%Vor%     
s29 09.08.2017 02:04
quelle

Tags und Links