2013-05-29 3 views
13

Cosa posso usare per diff due file CSV a livello di campo, mettendo in evidenza i campi esatte che hanno cambiato? Si assuma un semplice formato CSV in cui le virgole appaiono solo come separatori di campo e da nessun'altra parte.Strumento per diffare i file CSV a livello di campo?

risposta

15

Prova git diff:

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

@einpoklum - no-index se non è impegnata – Hatshepsut

2

csvdiff è uno strumento a riga di comando scritto in Python che mette a confronto i file CSV sul livello di campo: https://pypi.python.org/pypi/csvdiff

+0

sembra che mentre è campo-aware, confronta le linee, non i campi - e non mostra quali campi (al contrario di quali linee) differiscono. – einpoklum

13

git diff --word-diff-regex offre un modo per mostrare i cambiamenti a livello di campo. Vedere Also use comma as a word separator in diff

Questa soluzione funziona bene per mostrare i cambiamenti in un file CSV con i numeri e senza spazi. Ad esempio, supponiamo che abbiamo cambiato un numero

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

a

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

Se usiamo git diff --word-diff-regex="[^[:space:],]+" x.csv y.csv, allora otteniamo:

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

Questo può essere molto utile per un file CSV con molti colonne.