2013-05-29 9 views
13

Was kann ich verwenden, um zwei CSV-Dateien auf Feldebene zu unterscheiden, wobei die exakten Felder hervorzuheben sind, die sich geändert haben? Nehmen Sie ein einfaches CSV-Format an, in dem Kommas nur als Feldtrennzeichen und nirgendwo sonst erscheinen.Tool zum Vergleichen von CSV-Dateien auf Feldebene?

Antwort

15

Versuchen git diff:

git diff --color-words x.csv y.csv 
+0

@einpoklum - No-Index, wenn es nicht committed – Hatshepsut

2

csvdiff ist ein Kommandozeilen-Tool in Python geschrieben, die CSV-Dateien auf der Feldebene vergleicht: https://pypi.python.org/pypi/csvdiff

+0

Es scheint, dass, während es Feld-bewusst ist, es Zeilen, nicht Felder vergleicht - und zeigt nicht, welche Felder (im Gegensatz zu welchen Zeilen) unterscheiden. – einpoklum

13

git diff --word-diff-regex bietet eine Möglichkeit, Änderungen auf Feldebene zu zeigen. Siehe Also use comma as a word separator in diff

Diese Lösung eignet sich gut zum Anzeigen von Änderungen in einer CSV-Datei mit Zahlen und ohne Leerzeichen. Angenommen, wir

1,1,1,1,1,1,1,1 

zu

1,1,2,1,1,1,1,1 

Wenn wir git diff --word-diff-regex="[^[:space:],]+" x.csv y.csv verwenden Sie eine Nummer

geändert, dann erhalten wir:

1,1,[-1-]{+2+},1,1,1,1,1 

Dies kann sehr hilfreich sein für eine CSV mit vielen Datei Säulen.

Verwandte Themen