2 .txt Dateien vergleichen und gleiche Zeilen löschen

Arion

Lieutenant
Registriert
Dez. 2011
Beiträge
708
Hi Leute, ich habe hier 2 .txt Dateien. Die eine hat besteht aus etwa 1,7 Millionen Zeilen und die zweite aus etwa 800.000 Zeilen. Nun suche ich ein Programm, das beide .txts vergleicht und die Zeilen, die gleich sind, aus der 1. (der Großen .txt) löscht und alle ungleichen Zeilen in einen 3.txt kopiert.

Gibt es so ein Programm zufällig? :(
 
BeyondCompare zeigt Dir die Unterschiede an, aber wird wohl nicht in der Lage sein, die gewünschten Zeilen zu löschen. Außerdem ist zu beachten, dass es hier um sehr große Dateien geht. Das könnte problematisch sein.

Ist doch schnell programmiert, wenn man wirklich nur gleiche Zeilen vergleichen muss.
 
WinMerge sollte dies auch können
 
Der Unix Kram scheint die beiden Listen auch nur zu vergleichen aber nicht automatisch doppelte Zeilen löschen.

Wenn ich bloß programmieren könnte. :D

WinMerge erlaubt leider nur einzelne Zeilen zu löschen oder zu verschieben:(
 
Hast Du Java installiert? Oder kannst es Dir installieren? Dann schreibe ich das schnell. Welches Encoding verwenden die Dateien?
 
Java habe ich installiert. Was meinst du denn mit Encoding? So was wie UTF-8? Das kann ich dir nicht sagen, ich habe jedenfalls nichts verändert.
 
Ja, genau, sowas wie UTF-8. Das müsstest Du schon wissen. Wenn nicht das korrekte Encoding verwendet wird, ist die Ausgabe womöglich falsch.

Mit welchem Programm wurden die Dateien denn erstellt? Du arbeitest vermutlich unter Windows?
 
Dann schau mal, ob die folgende Binary tut, was sie soll.

Aufruf mit java -jar compare.zip input1 input2 output

input1 und input2 müssen existieren. Es ist egal, welche Datei größer ist. output wird mitsamt Pfad erstellt, wenn alles gut geht. Benötigt wird eine Java 5 Runtime.
 

Anhänge

Arion schrieb:
Der Unix Kram scheint die beiden Listen auch nur zu vergleichen aber nicht automatisch doppelte Zeilen löschen.

Na und? Das comm-Kommando kannst du aber so aufrufen, daß es dir nur die ungleichen Zeilen ausgibt. Wenn du diese Ausgaben dann wieder in eine Datei umlenkst und dann deine 1. Datei löscht und mit der eben neu entstandenen Datei ersetzt, ist das Ergebnis doch genau das gleiche, als wenn du alle gleichen Zeilen aus der 1. Datei gelöscht hättest.
 
Vielen Dank soares! Aber irgendwas klappt nicht. Habe Java 7.0 und versucht das Programm so in cmd zu öffnen:

java -jar compare.zip liste1.txt liste2.txt listeAUSGABE.txt

Die .zip und beide .txts befinden sich auf dem Desktop.
 
In welchem Verzeichnis befindest Du Dich? Verwende mal den vollständigen Pfad zu den Dateien.

Fehlermeldung?
 
Auch die Pfadangaben bringen nichts:

java -jar compare.zip C:\Users\Win\Desktop\liste1.txt C:\Users\Win\Desktop\liste2.txt C:\Users\Win\Desktop\listeAUSGABE.txt

Es wird immer dieser Fehler angezeigt: Error: Unable to access jarfile compare.zip
 
antred schrieb:
Unter UNIX gibt es ein comm-Kommando, das dir helfen könnte.[/url]

Hier müssen die Zeilen aber sortiert sein. Was nicht der Fall sein dürfte.
Ergänzung ()

Arion schrieb:
Auch die Pfadangaben bringen nichts:

java -jar compare.zip C:\Users\Win\Desktop\liste1.txt C:\Users\Win\Desktop\liste2.txt C:\Users\Win\Desktop\listeAUSGABE.txt

Es wird immer dieser Fehler angezeigt: Error: Unable to access jarfile compare.zip

Wenn Du Dich nicht in "C:\Users\Win\Desktop\" befindest, musst Du natürlich auch dem Launcher einen absoluten (oder korrekten relativen Pfad) übergeben.

java -jar C:\Users\Win\Desktop\compare.zip ...

Leuchtet ein, oder?
 
Vielen Dank soares! Jetzt hat es geklappt. Und es stimmt...leuchtet ein, dass auch der Pfad zum Programm angegeben werden muss.
 
Dann sind die Daten in der neu erstellten Datei aber ebenfalls sortiert, was man vermutlich nicht möchte. Das kann aber nur der TE beantworten.
 
Zurück
Oben