Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

CSV-Dateien vergleichen und gemeinsame Zeilen finden

InvisibleBot / 5 Antworten / Flachansicht Nickles

Hallo,

ich habe 2 CSV-Dateien (Datei A mit 1300 Zeilen, Datei B mit 6700 Zeilen) und muss herausfinden, welche Zeilen in beiden Dateien enthalten sind.

Also in der Form, dass für jede einzelne Zeile aus Datei A verglichen wird, ob diese Zeile auch irgendwo in Datei B steht. Wenn ja, soll die Zeile in eine dritte Datei ausgegeben werden.

Hab eine Weile gegoogelt, aber fast nur Lösungen gefunden die Unterschiede finden. Ich dachte dass der Batchbefehl findstr das eigentlich können sollte, aber der vergleicht wohl nicht jede Zeile einzeln mit der ganzen Datei B sondern die einzelnen Zeilen direkt miteinander. Je nachdem wie ich findstr konfiguriere bekomme ich daher als Ausgabe entweder eine leere Datei oder den kompletten Inhalt von Datei A.

Winmerge zeigt mir die gemeinsamen Zeilen schön an, allerdings habe ich keine Möglichkeit gefunden die dann herauszufiltern und auszugeben.

Kann mir jemand auf die Sprünge helfen?

- Beat the machine that works in your head! -
bei Antwort benachrichtigen
InvisibleBot mawe2 „Man könnte beide Dateien in eine Excel-Tabelle kopieren. Inhalt von Datei A in Spalte A einfügen, Inhalt von Datei B in ...“
Optionen

Während ihr bereits weiter diskutiert, hab ich (bzw. mein PC) an der Lösung von mawe2 gearbeitet. Funktioniert einwandfrei, mit einer Einschränkung:

Ich hab in der 3. Spalte jetzt alle doppelt vorhandenen Einträge stehen - und zwar genau da wo sie auch in Spalte 1 stehen. Wenn ich nun versuche, die Spalte 3 zur Weiterverarbeitung in ein neues Dokument zu kopieren, arbeitet der PC ~15 Minuten (in dieser Zeit steht da Excel reagiert nicht) und präsentiert mir dann ein leeres Dokument.

Edit:
Ahh, mein Fehler. Ich hatte einfach die komplette Spalte 3 markiert und dabei übersehen dass Excel das Dokument bei der ersten Berechnung auf über 1Mio Zeilen aufgebläht hat. Hab es jetzt nochmal versucht, dabei nur den befüllten Teil markiert und als "Werte einfügen" kopiert. Tipptop.

Vielen Dank für eure Hilfe, @mawe2 und @Anne0709!

- Beat the machine that works in your head! -
bei Antwort benachrichtigen