Entfernen Sie doppelte Zeilen in Bash
-
Verwenden Sie
sort
unduniq
, um doppelte Zeilen in Bash zu entfernen -
Verwenden Sie den Befehl
awk
, um doppelte Zeilen in Bash zu entfernen
Doppelte Einträge können verschiedene Probleme in einem Bash-Skript verursachen, wie z. B. falsche oder inkonsistente Ergebnisse, und sie können das Skript auch schwer wartbar machen. Das Entfernen doppelter Einträge aus dem Skript ist oft notwendig, um diese Probleme zu vermeiden, und es gibt zahlreiche Möglichkeiten, dies in Bash zu tun.
Verwenden Sie sort
und uniq
, um doppelte Zeilen in Bash zu entfernen
Ein Ansatz zum Entfernen doppelter Einträge in einem Bash-Skript ist die Verwendung der Befehle sort
und uniq
. Der Befehl sort
sortiert die Eingabedaten in einer bestimmten Reihenfolge, und der Befehl uniq
filtert doppelte Zeilen aus den sortierten Daten heraus.
Die Datei data.txt
enthält den unten stehenden Inhalt für die Beispiele in diesem Artikel.
arg1
arg2
arg3
arg2
arg2
arg1
Um doppelte Einträge aus der obigen Datei zu entfernen, können Sie den folgenden Befehl verwenden:
sort data.txt | uniq > data-unique.txt
Ausgabe (touch data-unique.txt
):
arg1
arg2
arg3
Dieser Befehl sortiert die Datei data.txt
in aufsteigender Reihenfolge (standardmässig) und leitet die Ausgabe an den Befehl uniq
weiter. Der Befehl uniq
filtert doppelte Zeilen aus den sortierten Daten heraus und schreibt das Ergebnis in eine neue Datei namens data-unique.txt
.
Dadurch werden alle doppelten Einträge aus der Datei data.txt
entfernt und eine neue Datei mit eindeutigen Einträgen erstellt.
Der Befehl uniq
verfügt über mehrere Optionen, mit denen sein Verhalten gesteuert werden kann, z. B. die Option -d
, um nur doppelte Zeilen zu drucken, oder die Option -c
, um zu drucken, wie oft jede Zeile erscheint in der Eingabe. Um beispielsweise zu drucken, wie oft jede Zeile in der Datei data.txt
vorkommt, können Sie den folgenden Befehl verwenden:
sort data.txt | uniq -c
Dieser Befehl ähnelt dem vorherigen, fügt jedoch die Option -c
zum Befehl uniq
hinzu. Dadurch wird die Anzahl der Male gedruckt, mit denen jede Zeile in der Eingabe und der Zeile selbst erscheint.
Das Ergebnis könnte beispielsweise so aussehen:
2 arg1
3 arg2
1 arg3
Diese Ausgabe zeigt, dass Zeile 1 angezeigt wird.
Verwenden Sie den Befehl awk
, um doppelte Zeilen in Bash zu entfernen
Ein weiterer Ansatz zum Entfernen doppelter Einträge in einem Bash-Skript ist die Verwendung des Befehls awk
, ein leistungsstarkes Textverarbeitungstool, das zahlreiche Operationen auf Textdateien ausführen kann. Der Befehl awk
hat eine eingebaute assoziative Array-Datenstruktur, die das Vorkommen jeder Zeile in der Eingabe speichern und zählen kann.
Um beispielsweise doppelte Einträge aus derselben Datei wie zuvor zu entfernen, können Sie den folgenden Befehl verwenden:
awk '!a[$0]++' data.txt > data-unique.txt
Ausgang:
arg1
arg2
arg3
Dieser Befehl verwendet den Befehl awk
, um die Datei data.txt
zu lesen, und wendet eine einfache Bedingung auf jede Eingabezeile an. Die Bedingung verwendet den Ausdruck !a[$0]++
, der den Wert des Arrays a
für jede gelesene Zeile erhöht.
Dadurch wird effektiv gezählt, wie oft jede Zeile in der Eingabe erscheint, und die Zählung im Array a
gespeichert.
Der awk
-Befehl wendet dann das !
-Operator für den Ausdruck a[$0]
, der den Wert des Array-Elements negiert. Das bedeutet, dass nur Zeilen mit einem Zählwert von 0 im Array a
die Bedingung passieren und an die Ausgabe ausgegeben werden. Die Ausgabe wird dann in eine neue Datei namens data-unique.txt
umgeleitet, die eindeutige Einträge aus der Datei data.txt
enthält.
Der Befehl awk
bietet auch mehrere Optionen und Funktionen, mit denen sein Verhalten gesteuert und seine Ausgabe angepasst werden kann. Beispielsweise können Sie mit der Option -F
ein anderes Feldtrennzeichen angeben oder mit der Option -v
eine Variable im Skript definieren.
Sie können auch die Funktion printf
verwenden, um die Ausgabe des awk
-Befehls auf verschiedene Arten zu formatieren.
Die Befehle sort
und uniq
sind einfache und effiziente Werkzeuge zum Entfernen doppelter Einträge, und der Befehl awk
bietet erweiterte Funktionen und Optionen zum Anpassen der Ausgabe und des Verhaltens des Skripts.
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedIn