Entfernen doppelter Zeilen aus einer Textdatei mit der Linux-Befehlszeile
Das Entfernen doppelter Zeilen aus einer Textdatei kann über die Linux-Befehlszeile erfolgen. Eine solche Aufgabe kann häufiger und notwendiger sein, als Sie denken. Das häufigste Szenario, in dem dies hilfreich sein kann, sind Protokolldateien. Oft wiederholen Protokolldateien dieselben Informationen immer wieder, was es fast unmöglich macht, die Datei zu durchsuchen, und die Protokolle manchmal unbrauchbar macht.
In dieser Anleitung zeigen wir Ihnen verschiedene Befehlszeilenbeispiele, mit denen Sie doppelte Zeilen aus einer Textdatei löschen können. Probieren Sie einige der Befehle auf Ihrem eigenen System aus, und verwenden Sie den Befehl, der für Ihr Szenario am besten geeignet ist.
In diesem Tutorial lernen Sie:
- So entfernen Sie doppelte Zeilen beim Sortieren aus der Datei
- So zählen Sie die Anzahl der doppelten Zeilen in einer Datei
- So entfernen Sie doppelte Zeilen, ohne die Datei zu sortieren
Verschiedene Beispiele für das Entfernen doppelter Zeilen aus einer Textdatei unter Linux
Entfernen Sie doppelte Zeilen aus der Textdatei
Diese Beispiele funktionieren auf jeder Linux-Distribution, vorausgesetzt, Sie verwenden die Bash-Shell.
In unserem Beispielszenario arbeiten wir mit der folgenden Datei, die nur die Namen verschiedener Linux-Distributionen enthält. Dies ist eine sehr einfache Textdatei, aber in Wirklichkeit könnten Sie diese Methoden auf Dokumente anwenden, die sogar Tausende von Wiederholungszeilen enthalten. Anhand der folgenden Beispiele sehen wir, wie Sie alle Duplikate aus dieser Datei entfernen können.
cat distros.txt
Ubuntu
CentOS
Debian
Ubuntu
Fedora
Debian
openSUSE
openSUSE
Debian
Der Befehl
uniqist in der Lage, alle eindeutigen Zeilen aus unserer Datei zu isolieren, aber das funktioniert nur, wenn die doppelten Zeilen nebeneinander liegen. Damit die Zeilen nebeneinander liegen, müssten sie zunächst in alphabetischer Reihenfolge sortiert werden. Der folgende Befehl funktioniert mitsortunduniq.sort distros.txt | uniq CentOS Debian Fedora openSUSE UbuntuUm die Dinge einfacher zu machen, können wir einfach das
-umit sort verwenden, um genau das gleiche Ergebnis zu erhalten, anstatt an uniq.
sort -u distros.txt CentOS Debian Fedora openSUSE UbuntuUm zu sehen, wie viele Vorkommen jeder Zeile in der Datei enthalten sind, können wir die Option
-c(Anzahl) mit uniq verwenden.sort distros.txt | uniq -c 1 CentOS 3 Debian 1 Fedora 2 openSUSE 2 UbuntuUm die Zeilen zu sehen, die sich am häufigsten wiederholen, können wir mit den Optionen
-n(numerische Sortierung) und-rumkehren an einen weiteren Sortierbefehl weiterleiten. Auf diese Weise können wir schnell sehen, welche Zeilen in der Datei am häufigsten dupliziert werden – eine weitere praktische Option zum Durchsuchen von Protokollen.sort distros.txt | uniq -c | sort -nr 3 Debian 2 Ubuntu 2 openSUSE 1 Fedora 1 CentOSEin Problem bei der Verwendung der vorherigen Befehle besteht darin, dass wir uns auf
sortverlassen. Das bedeutet, dass unsere endgültige Ausgabe alphabetisch sortiert ist, oder sortiert nach der Anzahl der Wiederholungen, wie im vorherigen Beispiel. Das mag manchmal eine gute Sache sein, aber was ist, wenn wir die Textdatei benötigen, um ihre vorherige Reihenfolge beizubehalten? Wir können doppelte Zeilen entfernen, ohne die Datei zu sortieren, indem wir den Befehlawkin der folgenden Syntax verwenden.awk '!seen[$0]++' distros.txt Ubuntu CentOS Debian Fedora openSUSEMit diesem Befehl wird das erste Vorkommen einer Zeile beibehalten, und zukünftige doppelte Zeilen werden aus der Ausgabe entfernt.
In den vorherigen Beispielen wird die Ausgabe direkt an Ihr Terminal gesendet. Wenn Sie eine neue Textdatei wünschen, in der Ihre doppelten Zeilen herausgefiltert werden, können Sie eines dieser Beispiele anpassen, indem Sie einfach den
> Bash-Operator verwenden,wie im folgenden Befehl beschrieben.awk '!seen[$0]++' distros.txt > distros-new.txt
Dies sollten alle Befehle sein, die Sie benötigen, um doppelte Zeilen aus einer Datei zu löschen, während Sie optional die Zeilen sortieren oder zählen. Es gibt noch mehr Methoden, aber diese sind am einfachsten zu verwenden und zu merken.
Abschließende Gedanken
In dieser Anleitung haben wir verschiedene Befehlsbeispiele gesehen, um doppelte Zeilen aus einer Textdatei unter Linux zu entfernen. Sie können diese Befehle auf Protokolldateien oder jede andere Art von Klartextdatei anwenden, die doppelte Zeilen enthält. Wir haben auch gelernt, wie man Zeilen einer Textdatei sortiert oder die Anzahl der Duplikate zählt, da dies manchmal die Isolierung der benötigten Informationen aus einem Dokument beschleunigen kann.
