Bash Scripting

Effizientes Entfernen von doppelten Zeilen in Bash

Spread the love

Das Entfernen von doppelten Zeilen aus einer Textdatei ist eine gängige Aufgabe in Bash-Skripten. Dieser Artikel beschreibt zwei effiziente Methoden: die Verwendung von sort und uniq sowie die Nutzung der Möglichkeiten von awk.

Inhaltsverzeichnis

Verwenden von sort und uniq

Dieser Ansatz kombiniert zwei grundlegende Unix-Dienstprogramme für eine unkomplizierte Lösung. sort ordnet die Zeilen alphabetisch an, eine Voraussetzung für uniq, das dann aufeinanderfolgende Duplikate entfernt. Die Reihenfolge des *ersten* Auftretens jeder Zeile bleibt erhalten.

Hier ist der Befehl:


sort datei.txt | uniq > datei_unique.txt

Dieser Befehl leitet die sortierte Ausgabe von datei.txt an uniq weiter und speichert die eindeutigen Zeilen in datei_unique.txt. Die Originaldatei bleibt unverändert.

Beispiel:

Wenn datei.txt enthält:


Apfel
Banane
Apfel
Orange
Banane
Traube

wird datei_unique.txt enthalten:


Apfel
Banane
Orange
Traube

Verwenden des awk-Befehls

awk bietet eine flexiblere und leistungsfähigere Lösung, die besonders nützlich ist, wenn die ursprüngliche Reihenfolge der Zeilen erhalten bleiben muss. Es verwendet ein assoziatives Array, um die bereits gesehenen Zeilen zu verfolgen.

Der Befehl ist bemerkenswert kurz:


awk '!seen[$0]++' datei.txt > datei_unique.txt

Schauen wir uns das im Detail an:

  • $0 repräsentiert die gesamte aktuelle Zeile.
  • seen[$0] greift auf ein Element im seen-Array zu, wobei die Zeile als Schlüssel verwendet wird.
  • ++ inkrementiert den Wert (anfangs 0) nach der Verwendung.
  • ! negiert das Ergebnis; die Zeile wird nur ausgegeben, wenn sie zum ersten Mal auftritt (wenn seen[$0] 0 ist).

Diese Methode erhält die ursprüngliche Reihenfolge der Zeilen.

Beispiel:

Bei Verwendung der gleichen datei.txt lautet die Ausgabe in datei_unique.txt:


Apfel
Banane
Orange
Traube

Fazit:

Beide Methoden entfernen effektiv doppelte Zeilen. sort | uniq ist einfacher für einfache Szenarien, während awk mehr Flexibilität und Kontrolle bietet, insbesondere um die ursprüngliche Reihenfolge zu erhalten oder komplexere Anforderungen an die Entfernung von Duplikaten zu erfüllen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert