So finden Sie mit uniq . doppelte Daten in einer Linux-Textdatei

So finden Sie mit uniq . doppelte Daten in einer Linux-Textdatei

Sind Ihnen schon einmal Textdateien mit wiederholten Zeilen und doppelten Wörtern begegnet? Vielleicht arbeiten Sie regelmäßig mit Befehlsausgaben und möchten diese nach bestimmten Zeichenfolgen filtern. Wenn es um Textdateien und das Entfernen redundanter Daten unter Linux geht, ist der Befehl uniq die beste Wahl.





In diesem Artikel werden wir den uniq-Befehl ausführlich besprechen, zusammen mit einer detaillierten Anleitung zur Verwendung des Befehls, um doppelte Zeilen aus einer Textdatei zu entfernen.





Was ist der uniq-Befehl?

Der Befehl uniq in Linux wird verwendet, um identische Zeilen in einer Textdatei anzuzeigen. Dieser Befehl kann hilfreich sein, wenn Sie doppelte Wörter oder Zeichenfolgen aus einer Textdatei entfernen möchten. Da der Befehl uniq benachbarte Zeilen abgleicht, um redundante Kopien zu finden, funktioniert er nur mit sortierten Textdateien.





Zum Glück kannst du das pfeifen Sortieren Befehl mit uniq, um die Textdatei so zu organisieren, dass sie mit dem Befehl kompatibel ist. Abgesehen von der Anzeige wiederholter Zeilen kann der Befehl uniq auch das Vorkommen doppelter Zeilen in einer Textdatei zählen.

So verwenden Sie den uniq-Befehl

Es gibt verschiedene Optionen und Flags, die Sie mit uniq verwenden können. Einige von ihnen sind einfach und führen einfache Operationen wie das Drucken wiederholter Zeilen durch, während andere für fortgeschrittene Benutzer gedacht sind, die häufig mit Textdateien unter Linux arbeiten.



Grundsyntax

Die grundlegende Syntax des uniq-Befehls lautet:

uniq option input output

...wo Möglichkeit ist das Flag, das verwendet wird, um bestimmte Methoden des Befehls aufzurufen, Eingang ist die Textdatei für die Verarbeitung, und Ausgang ist der Pfad der Datei, in der die Ausgabe gespeichert wird.





Die Ausgang Argument ist optional und kann übersprungen werden. Wenn ein Benutzer die Eingabedatei nicht angibt, verwendet uniq Daten aus der Standardausgabe als Eingabe. Dies ermöglicht einem Benutzer, uniq mit andere Linux-Befehle .

Beispieltextdatei

Wir verwenden die Textdatei Duplikat.txt als Eingabe für den Befehl.





127.0.0.1 TCP
127.0.0.1 UDP
Do catch this
DO CATCH THIS
Don't match this
Don't catch this
This is a text file.
This is a text file.
THIS IS A TEXT FILE.
Unique lines are really rare.

Beachten Sie, dass wir diese Textdatei bereits mit dem sortiert haben Sortieren Befehl. Wenn Sie mit einer anderen Textdatei arbeiten, können Sie diese mit dem folgenden Befehl sortieren:

sort filename.txt > sorted.txt

Doppelte Zeilen entfernen

Die grundlegendste Verwendung von uniq besteht darin, wiederholte Zeichenfolgen aus der Eingabe zu entfernen und eine eindeutige Ausgabe zu drucken.

uniq duplicate.txt

Ausgabe:

Beachten Sie, dass das System das zweite Vorkommen der Linie nicht anzeigt Dies ist eine Textdatei . Außerdem druckt der oben genannte Befehl nur die eindeutigen Zeilen in der Datei und beeinflusst nicht den Inhalt der ursprünglichen Textdatei.

Wiederholte Zeilen zählen

Um die Anzahl der wiederholten Zeilen in einer Textdatei auszugeben, verwenden Sie die -C Flag mit dem Standardbefehl.

uniq -c duplicate.txt

Ausgabe:

Das System zeigt die Anzahl jeder Zeile an, die in der Textdatei vorhanden ist. Sie können sehen, dass die Linie Dies ist eine Textdatei kommt zweimal in der Datei vor. Standardmäßig unterscheidet der Befehl uniq die Groß-/Kleinschreibung.

Um nur doppelte Zeilen aus der Textdatei zu drucken, verwenden Sie die -D Flagge. Die -D steht für Duplikat .

uniq -D duplicate.txt

Das System zeigt die Ausgabe wie folgt an.

This is a text file.
This is a text file.

Überspringen von Feldern beim Prüfen auf Duplikate

Wenn Sie beim Abgleichen der Zeichenfolgen eine bestimmte Anzahl von Feldern überspringen möchten, können Sie die -F mit dem Befehl markieren. Die -F steht für Gebiet .

Betrachten Sie die folgende Textdatei Felder.txt .

192.168.0.1 TCP
127.0.0.1 TCP
354.231.1.1 TCP
Linux FS
Windows FS
macOS FS

So überspringen Sie das erste Feld:

uniq -f 1 fields.txt

Ausgabe:

192.168.0.1 TCP
Linux FS

Der oben erwähnte Befehl übersprang das erste Feld (die IP-Adressen und OS-Namen) und stimmte mit dem zweiten Wort (TCP und FS) überein. Dann wurde das erste Vorkommen jeder Übereinstimmung als Ausgabe angezeigt.

Ignoriere Zeichen beim Vergleichen

Wie beim Überspringen von Feldern können Sie auch Zeichen überspringen. Die -S -Flag ermöglicht es Ihnen, die Anzahl der zu überspringenden Zeichen anzugeben, während doppelte Zeilen abgeglichen werden. Diese Funktion hilft, wenn die Daten, mit denen Sie arbeiten, in Form einer Liste wie folgt vorliegen:

So reparieren Sie das iPhone, das auf dem Apple-Logo hängt
1. First
2. Second
3. Second
4. Second
5. Third
6. Third
7. Fourth
8. Fifth

So ignorieren Sie die ersten beiden Zeichen (die Listennummerierungen) in der Datei list.txt :

uniq -s 2 list.txt

Ausgabe:

In der obigen Ausgabe wurden die ersten beiden Zeichen ignoriert und der Rest auf eindeutige Zeilen abgeglichen.

Überprüfen Sie die ersten N Zeichen auf Duplikate

Die -in -Flag ermöglicht es Ihnen, nur eine feste Anzahl von Zeichen auf Duplikate zu überprüfen. Zum Beispiel:

uniq -w 2 duplicate.txt

Der oben genannte Befehl stimmt nur mit den ersten beiden Zeichen überein und druckt ggf. eindeutige Zeilen.

Ausgabe:

Groß-/Kleinschreibung entfernen

Wie oben erwähnt, beachtet uniq die Groß-/Kleinschreibung beim Abgleichen von Zeilen in einer Datei. Um die Groß-/Kleinschreibung zu ignorieren, verwenden Sie das -ich Option mit dem Befehl.

uniq -i duplicate.txt

Sie sehen die folgende Ausgabe.

Beachten Sie in der obigen Ausgabe, dass uniq die Zeilen nicht angezeigt hat FANG DAS und DIES IST EINE TEXTDATEI .

Ausgabe an eine Datei senden

Um die Ausgabe des uniq-Befehls an eine Datei zu senden, können Sie die Ausgabeumleitung ( > ) Zeichen wie folgt:

uniq -i duplicate.txt > otherfile.txt

Beim Senden einer Ausgabe an eine Textdatei zeigt das System die Ausgabe des Befehls nicht an. Sie können den Inhalt der neuen Datei mit der Katze Befehl.

cat otherfile.txt

Sie können auch andere Möglichkeiten nutzen, um Befehlszeilenausgabe an eine Datei in Linux senden .

Analysieren von doppelten Daten mit uniq

Bei der Verwaltung von Linux-Servern arbeiten Sie die meiste Zeit entweder am Terminal oder bearbeiten Textdateien. Daher kann es für Ihre Linux-Kenntnisse von großem Vorteil sein, zu wissen, wie Sie redundante Kopien von Zeilen in einer Textdatei entfernen.

Die Arbeit mit Textdateien kann frustrierend sein, wenn Sie nicht wissen, wie Sie Text in einer Datei filtern und sortieren. Um Ihnen die Arbeit zu erleichtern, verfügt Linux über mehrere Befehle zur Textbearbeitung, wie z sed und awk mit denen Sie effizient mit Textdateien und Befehlszeilenausgaben arbeiten können.

Teilen Teilen Tweet Email Diese 10 Sed-Beispiele machen Sie zu einem Linux-Power-User

Möchten Sie ein Linux-Power-User werden? Sich mit Sed auseinanderzusetzen, wird helfen. Lernen Sie aus diesen 10 sed-Beispielen.

Weiter lesen
Verwandte Themen
  • Linux
  • Linux
Über den Autor Deepesh Sharma(79 Artikel veröffentlicht)

Deepesh ist Junior Editor für Linux bei MUO. Er schreibt Informationshandbücher zu Linux mit dem Ziel, allen Neulingen eine glückselige Erfahrung zu bieten. Bei Filmen bin ich mir nicht sicher, aber wenn Sie über Technologie sprechen möchten, ist er Ihr Mann. In seiner Freizeit findet man ihn beim Lesen von Büchern, beim Hören verschiedener Musikgenres oder beim Gitarrespielen.

Mehr von Deepesh Sharma

Abonniere unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um sich zu abonnieren