Duplikate aus der TXT-Datei entfernen

423
Mads Nielsen

Ich habe eine TXT-Datei, die bis zu 13.000.000 zufällig generierte Codes enthalten kann, die mit "\ n" von der fputcsv-Funktion in PHP getrennt werden.

Was ist der effektivste Weg, um Duplikate aus dieser Datei zu entfernen?

Vielen Dank!

0
Mögliches Duplikat von [Excel 2010 Entfernen von Duplikaten] (http://superuser.com/questions/518751/excel-2010-removing-duplicates) SeanClt vor 8 Jahren 2
@SeanClt habe ich mit excell ausprobiert. Es stürzt ab. Mads Nielsen vor 8 Jahren 0
Excel ist die Software, in der xls und csv nur die gleiche Dateiformatlösung verwenden SeanClt vor 8 Jahren 0
@SeanClt das OP verfügt über 13 MILLIONEN Datensätze. Die harte Grenze für Zeilen in Excel 2010 beträgt 1 Million. Burgi vor 8 Jahren 2
Wenn dies nicht der Fall ist, müsste VB-Code programmgesteuert verwendet werden SeanClt vor 8 Jahren 0
@MadsAnkerNielsen - Schreiben Sie ein kleines Programm, das die Datei in Blöcke lädt. Eine einfache Möglichkeit, Speicherprobleme zu vermeiden, besteht darin, zunächst zu ermitteln, wie viele Datensätze vorhanden sind, und dann die Aufteilung in kleinere Blöcke zu ermitteln. Wenn Sie die Datei in Blöcke aufgeteilt haben, können Sie jede Datei stapelweise laden und ein zusammengeführtes Dokument erstellen, das keine Duplikate enthält. * Sie sprechen höchstens 200 Zeilen Code. * Ramhound vor 8 Jahren 0
Bitte [bearbeiten] Sie Ihre Frage und beschreiben Sie Ihr Dateiformat besser. Es ist unklar, ob sich diese Codes alle in einer Zeile oder in mehreren Zeilen befinden. Warum sagen Sie 'die Menge des Codes kann variieren'? Ich kann das als * pro Zeile * interpretieren (in diesem Fall: ein größeres Beispiel angeben) oder * diese Dateien (diese Dateien?) Werden wiederholt generiert, sodass ich diesen Prozess automatisieren muss *. Was ist es? Jan Doggen vor 8 Jahren 0

1 Antwort auf die Frage

2
Burgi

Ich denke, das Problem hier ist, dass Excel ein Limit von 1.048.576 Zeilen hat und Ihr Datensatz 13 Millionen Einträge enthält. Jeder Eintrag sollte in einer separaten Zeile stehen.

Wenn Sie sich unter Windows befinden, können Sie ein Programm namens NotePad ++ verwenden, um Duplikate zu finden und zu entfernen. Die Antwort auf StackOverflow schlägt vor, entweder einen regulären Ausdruck oder ein Plugin zu verwenden.

Ich würde die Option für reguläre Ausdrücke verwenden. Nachfolgend finden Sie eine kurze Zusammenfassung der SO-Antwort.

  1. Stellen Sie sicher, dass sich jeder Eintrag in einer einzelnen Zeile befindet
  2. Öffnen Sie das Suchen und Ersetzen
  3. Wählen Sie den regulären Ausdrucksmodus
  4. Geben Sie den Ausdruck ^(.*?)$\s+?^(?=.*^\1$)in das Suchfeld ein
  5. Lassen Sie die Ersatzbox leer
  6. Klicken Sie auf Alle ersetzen

Wenn es sich bei diesen Daten um einen Export aus einer Datenbank handelt, sollten Sie in Betracht ziehen, Ihre SQL-Anweisung vor dem Export zu ändern, indem Sie DISTINCTnach dem Hinzufügen hinzufügen SELECT. Siehe hier für ein Beispiel.

Bitte [bearbeiten] Sie Ihre Antwort und verwenden Sie eine bessere Terminologie. Sie verwirren * Zeilen *, * Zeilen *, * Spalten * und * Datensätze *. Es hilft natürlich nicht, dass das OP eine unklare Frage stellt - vielleicht warten, bis er / sie es aufräumt. Jan Doggen vor 8 Jahren 0
Ich habe überhaupt keine Spalten erwähnt! ;) Ich nehme deinen Standpunkt jedoch ein. Burgi vor 8 Jahren 0
Ich testete dies mit einer kleinen Datei, die ich geschrieben hatte, und sah so aus (123 newline 123 newline 124 .....). Ich entfernte erfolgreich "123". Wenn ich dies jedoch mit meiner großen Datei versuche, wird das Ganze entfernt. Was mache ich falsch? Vielen Dank! Mads Nielsen vor 8 Jahren 0
@MadsAnkerNielsen in der SO-Antwort wird erwähnt, dass das Markieren oder Deaktivieren des "`. "Einer Newline entsprechen kann. Burgi vor 8 Jahren 0
Meine letzte Lösung war die Verwendung eines Plugins namens textFX. Deine Antwort war also nicht die exakte Lösung, aber du schickst mich auf die richtige Spur. Mads Nielsen vor 8 Jahren 1