GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie entferne ich doppelte Zeilen in einer Textdatei?

Eine riesige (bis zu 2 GiB) Textdatei von mir enthält ungefähr 100 exakte Duplikate jeder Zeile darin (in meinem Fall nutzlos, da die Datei eine CSV-ähnliche Datentabelle ist).

Was ich brauche, ist, alle Wiederholungen zu entfernen, während (vorzugsweise, aber dies kann für eine signifikante Leistungssteigerung geopfert werden) die ursprüngliche Sequenzreihenfolge beibehalten wird. Im Ergebnis soll jede Zeile eindeutig sein. Wenn es 100 gleiche Zeilen wären (normalerweise sind die Duplikate über die Datei verteilt und werden keine Nachbarn sein), soll nur eine der Art übrig bleiben.

Ich habe ein Programm in Scala geschrieben (betrachten Sie es als Java, wenn Sie Scala nicht kennen), um dies zu implementieren. Aber vielleicht gibt es schnellere C-geschriebene native Tools, die dies schneller erledigen können?

UPDATE:der awk '!seen[$0]++' filename Die Lösung schien für mich gut zu funktionieren, solange die Dateien in der Nähe von 2 GiB oder kleiner waren, aber jetzt, da ich eine 8-GiB-Datei bereinigen soll, funktioniert sie nicht mehr. Auf einem Mac mit 4 GiB RAM und einem 64-Bit-Windows 7-PC mit 4 GiB RAM und 6 GiB Swap scheint es unendlich zu dauern. Und angesichts dieser Erfahrung bin ich nicht begeistert davon, es unter Linux mit 4 GiB RAM auszuprobieren.

Akzeptierte Antwort:

Ein awk Lösung gesehen auf #bash (Freenode):

awk '!seen[$0]++' filename

Linux
  1. Wie entferne ich Leerzeilen aus einer Datei (einschließlich Tabulatoren und Leerzeichen)?

  2. Wie entferne ich „Binärdaten“ aus einer Textdatei (z. B. Bash_history)?

  3. Mit ein paar kleinen Änderungen ein paar Zeilen in einer Textdatei duplizieren?

  4. 7 Beispiele für Uniq-Befehle unter Linux zum Entfernen doppelter Zeilen aus einer Datei

  5. So verwenden Sie sed, um die letzten n Zeilen einer Datei zu entfernen

So drucken Sie doppelte Zeilen in einer Textdatei unter Linux

So entfernen Sie Zeilen aus einer Datei mit dem Sed-Befehl

So entfernen Sie alle Leerzeichen aus einer Textdatei

Effizient die ersten paar Zeilen aus einer Textdatei entfernen?

So erstellen Sie ASCII-Zeichnungen im Vim-Editor (Zeichnen von Kästen, Linien, Ellipsen, Pfeilen in einer Textdatei)

Wie zeigt man bestimmte Zeilen aus einer Textdatei in Linux an?