GUI-Software zum Vergleich zweier Dateien, "sauberer" Export von Unterschieden?

1721
John Rose

Gibt es eine Möglichkeit, die Unterschiede zwischen den Dateien "sauber" zu exportieren? Kein Unterschied oder gar ein formatierter Bericht ... nur ein sauberer Export von .CSV / .XLS / etc.

Dies ist für Leute, die nicht technisch sind; Wir haben eine Reihe nicht-technischer Mitarbeiter in unserem Unternehmen, die so etwas wirklich gebrauchen könnten. Sie arbeiten mit Mailinglisten und benötigen eine Möglichkeit, die Änderungen zwischen den Listenrevisionen zu extrahieren.

Als Programmierer weiß ich, dass es eine große Anzahl von Diff-Werkzeugen gibt: WinDiff, BeyondCompare, FileMerge, Befehlszeilen-Diff usw. Aber ich konnte bisher noch keines finden, das die Unterschiede rein exportiert. (Möglicherweise habe ich in einem der bekannten Diff-Tools, die ich aufgeführt habe, etwas verpasst.)

Beispiel...

FileA.csv

1000, Aaron 1001, Bob 1002, Chris 1004, Erin 

FileB.csv

1000, Aaron 1001, Bob 1002, Chris 1003, Dolores 1004, Edward 

Wir möchten nur die geänderten Zeilen nach ... "ChangesInFileB.csv" exportieren.

1003, Dolores 1004, Edward 

FWIW, die Support-Leute von Beyond Compare sagen, dass sie das nicht anbieten.
http://www.scootersoftware.com/vbulletin/showthread.php?p=32298#post32298

Diese Frage ist oberflächlich ähnlich, behandelt aber nicht die "Clean Export" -Ding- Sache https://superuser.com/questions/294142/can-somebody-recommend-a-program-to-compare-differences-in-two-text- Dateien und Re

3
Für reine Textdateien haben die meisten Unix-Systeme "comm -1 -3". grawity vor 12 Jahren 2
Sie benötigen also einen "Diff Viewer" und einen "Diff Exporter" in einem Tool. Oder reicht auch ein "Exporteur"? Wenn Sie beispielsweise als geplante Task ausgeführt werden und die Benutzer nur die Diff-Datei sehen. Raffael vor 12 Jahren 0

1 Antwort auf die Frage

2
sleske

You could just use the standard diff tool with some scripting.

For the two examples files, plain diff will output:

4c4,6 < 1004, Erin --- > 1003, Dolores > 1004, Edward 

The < means "line removed", the > "line added". Just filter for > to get all lines that are in the second file, but not in the first:

$ diff a.csv b.csv |grep '>'|cut -c 3- 1003, Dolores 1004, Edward 

(the cut part filtes out the leading >). You could put that into a script.

Note: The above assumes you have diff, grep & cut installed. They're standard on Linux and Mac OS X (I believe); for Windows you'd need Cygwin or similiar.