Textdatei 1 MINUS Textdatei 2 = Textdatei 3?

Failure

Lt. Junior Grade
Registriert
Okt. 2012
Beiträge
428
Hallo zusammen,

nach rund 6 Stunden erfolglosem Testen, versuche ich mein Glück hier.

Szenario: Ich habe 2 Textdateien.
Textdatei 1: 200k Werte
Textdatei 2: 50k Werte

Nun möchte ich die 50k Werte aus der ersten Textdatei löschen bzw. eine 3. Textdatei mit 150k Werten erstellen. Ich habe es mit Excel (stürzt ab), LibreOffice (stürzt ab), Google Tabellen (Chrome stürzt ab), grep (Mac), findstr (Windows) und notepad++ (compare) probiert, aber mit keinem bin ich erfolgreich gewesen. Diverse Online-Tools konnten mit den großen Datenmengen leider auch nichts anfangen.

Beispielaufbau der Dateien:
Textdatei 1:
A208338BBBF00
FJJFEJ03033_K
BLABLUBB123
WUFFWUFF__K
...insgesamt 200k Zeilen mit Buchstaben/Zahlen/Sonderzeichen

Textdatei 2:
A208338BBBF00
FJJFEJ03033_K
...insgesamt 50k Duplikate, die in Textdatei 1 ebenfalls vorkommen

Ich hoffe ihr könnt mir helfen, ich komme nicht mehr weiter.

VG,
Failure
 
Kleines python script schreiben?
 
Also aus Textdatei 1 sollen alle Werte, die in Textdatei 2 sind, gelöscht werden?

Also Textdatei 1 einlesen,
durch Textdatei 2 loopen und wenn in Textdatei 1 gefunden -> löschen,
übrig gebliebene Textdatei 1 aus dem Speicher als Textdatei 3 in Datei schreiben.

Fertig?
 
Sicher, dass die Programme abstürzen und nicht einfach nur nicht ansprechbar sind? Das alles zu laden, kann schon eine Weile dauern.
 
Rochus schrieb:
grep -u funktioniert nicht?
Nein, das hat nicht funktioniert. Ich habe aber weiter mit grep probiert und
grep -vFf Text1.txt Text2.txt > Text3.txt
hat funktioniert (dauert nur sehr lange, locker 1 Std., das ist bis kurz nach meinem Posting gelaufen :rolleyes:)

Das wäre dann die erste Hürde. Jetzt habe ich Text3.txt mit 150k Zeilen. Nun möchte ich Text3.txt mit Text4.txt (hier stehen 200k Werte mit dem ersten String + weiterem Text hinten dran) kombinieren, und die komplette Zeile in Text5.txt schreiben.

Beispiel Text3.txt
100
101
103
...150k Zeilen mit jeweils einem Wert

Beispiel Text4.txt
100 Ich bin ein toller Text
101 Ich bin noch tollerer Text
102 Ich bin der größte Text
103 Ich bin der allergrößte Text
...200k Zeilen mit vielen Werten, der erste String ist jedoch gleich

Beispiel Text5.txt
100 Ich bin ein toller Text
101 Ich bin noch tollerer Text
103 Ich bin der allergrößte Text
...am Ende 150k Zeilen mit allen Werten, ohne die Duplikate, die ich im ersten Schritt herausgefiltert habe

Ist das (einfach) zu realisieren?

VG und danke für die bisherigen Antworten.
 
grep kann das, ggf. mal in die Dokumentation dazu schauen
 
Ich bekomme es leider einfach nicht gebacken, ich hab schon zig Stunden investiert, aber irgendwie.. will es nicht. Ich habe schon mit split die Datei in kleinere Stücke gesplittet, aber ohne Erfolg. Vielleicht versuche ich es nochmal ausführlicher zu erklären:

Textdatei 1:
102
101
107
100

Textdatei 2:
100
102

Nun möchte ich so vorgehen:
Wenn aktueller Wert von Textdatei 2 in Textdatei 1 -> tue nichts
Wenn aktueller Wert von Textdatei 2 nicht in Textdatei 1 -> schreibe es in Textdatei 3

Endresultat, Textdatei 3:
101
107

Der erste Schritt ist also, Textdatei 1 abzüglich Textdatei 2 = Textdatei 3, die Werte stehen nicht in der selben Reihenfolge, können Zahlen, Buchstaben und Sonderzeichen enthalten.

Danach kommt Schritt 2. Wir haben nun die Textdatei 3 mit ihren Werten:
Textdatei 3:
101
107

Und eine weitere Datei Textdatei 4 mit den Werten:
100 Hallo Welt
101 Hallo Nachbar
102 Hallo Schwester
103 Hallo Papa
104 Hallo Mama
105 Hallo Oma
106 Hallo Opa
107 Hallo Bruder

Der Vorgang:
Wenn aktueller Wert von Textdatei 3 in Textdatei 4 -> schreibe die komplette Zeile in Textdatei 5
Wenn aktueller Wert von Textdatei 3 nicht in Textdatei 4 -> tue nichts

Finale Datei, Textdatei 5:
101 Hallo Nachbar
107 Hallo Bruder


Vielleicht kann man den ersten Schritt auch überspringen? Dann wäre der Vorgang folgender:
Textdatei 6:
100
102

Und eine weitere Datei Textdatei 7 mit den Werten:
100 Hallo Welt
101 Hallo Nachbar
102 Hallo Schwester
103 Hallo Papa
104 Hallo Mama
105 Hallo Oma
106 Hallo Opa
107 Hallo Bruder

Vorgang:
Wenn der aktuelle Wert von Textdatei 6 nicht in Textdatei 7 -> schreibe komplette Zeile in Textdatei 8
Wenn der aktuelle Wert von Textdatei 6 in Textdatei 7 -> tue nichts

Resultat, Textdatei 8:
101 Hallo Nachbar
103 Hallo Papa
104 Hallo Mama
105 Hallo Oma
106 Hallo Opa
107 Hallo Bruder

Optional könnte man auch andersrum vorgehen:
Wenn aktuelle ID vorhanden, lösche sie aus der Gesamtliste heraus.

Ich hänge euch beispielhaft 3 Textdateien an. Textdatei 1 enthält alle Werte, Textdatei 2 enthält alle IDs von Textdatei 1 und Textdatei 3 enthält die IDs, die ich streichen möchte. Es sind tab-getrennte Textdateien (auch im Original). GewünschtesErgebnis.txt spricht denke ich für sich selbst, aber so sollte die finale Datei dann aussehen. Wie gesagt, im Original habe ich eine ca. 150MB große Datei mit 200k Zeilen, davon sollen dann 50k Zeilen abgezogen werden.

VG,
Failure (ich mache meinem Namen alle Ehre!)
 

Anhänge

Ich habe Excel Version 16.24 for Mac. Beim SVerweis und benutzerdefinierten Regeln streikt er bei der Datenmenge von ca. 150MB...
 
SVERWEIS bei 200k Zeilen ist schon sehr abenteurlich :-)

Ist das was, dass du regelmäßig brauchst, oder nur mal so?
 
Moin,

hast du Zugriff auf des "normale" (also Win-) Excel in der Version ab 2013? Damit geht es mit ein paar Mausklicks ... :cool_alt: (Und selbst die 10-fache Menge von Zeilen wäre kein Problem ...)
 

Anhänge

Zurück
Oben