Linux Uniq Command Tutorial für Anfänger (10 Beispiele)
Wenn Sie ein Linux-Kommandozeilenbenutzer sind und Ihre Arbeit das Spielen mit Textdateien beinhaltet, sollten Sie wissen (wenn nicht bereits), dass es viele Kommandozeilenprogramme gibt, die Ihnen in verschiedenen Situationen sehr hilfreich sein können. Es gibt beispielsweise ein Tool namens „uniq“, das wiederholte Zeilen in einer Datei meldet oder sogar löscht.
In diesem Artikel werden wir ‚uniq‘ anhand leicht verständlicher Beispiele diskutieren. Aber bevor wir das tun, ist es erwähnenswert, dass alle in diesem Tutorial genannten Beispiele und Anweisungen auf Ubuntu 16.04LTS getestet wurden.
Linux Uniq Befehl
Wie bereits eingangs erwähnt, meldet oder lässt der Befehl uniq wiederholte Zeilen aus. Hier ist die allgemeine Syntax dieses Befehls:
uniq [OPTION]…… (INPUT[OUTPUT]]]
Gemäß der Man Page des Dienstprogramms: „Filtern Sie benachbarte Matching-Leitungen von INPUT (oder Standard-Eingang) und schreiben Sie in OUTPUT (oder Standard-Ausgang). Ohne Optionen werden übereinstimmende Linien mit dem ersten Auftreten zusammengeführt.“
Nachfolgend finden Sie einige Beispiele, die Ihnen helfen werden, das Tool besser zu verstehen.
1. Wie man wiederholte Zeilen mit dem Befehl uniq löscht
Angenommen, die Datei enthält folgende Zeilen:
Es ist klar, dass jede Zeile wiederholt wird. Lassen Sie uns nun Uniq auf dieser Datei ausführen und sehen, was passiert.
uniq file1
Wie Sie sehen können, enthält die Ausgabe, die der Befehl erzeugt hat, keine wiederholten Zeilen. Bitte beachten Sie, dass die Originaldatei – in unserem Fall’file1′ – unberührt bleibt. Sie können die Ausgabe des Tools in eine andere Datei umleiten, falls Sie sie speichern und bearbeiten möchten.
2. So zeigen Sie die Anzahl der Wiederholungen für jede Zeile an
Wenn Sie möchten, können Sie auch eine eindeutige Anzeige in der Ausgabe vornehmen, wie oft eine Zeile wiederholt wird. Dies kann durch die Verwendung des -c Kommandozeilenoption. Zum Beispiel der folgende Befehl:
uniq -c file1
erzeugt die folgende Ausgabe:
Wie Sie sehen können, ist die Anzahl der Wiederholungen für jede Zeile in der Ausgabe vorangestellt.
3. So drucken Sie nur doppelte Zeilen mit uniq
Um zu erreichen, dass uniq nur doppelte Zeilen druckt, verwenden Sie die Option -D Kommandozeilenoption. Angenommen, file1 enthält nun eine zusätzliche Zeile am unteren Rand (beachten Sie, dass diese Zeile nicht wiederholt wird).
Jetzt, wenn ich den folgenden Befehl ausführe:
uniq -D file1
Die folgende Ausgabe wird ausgegeben:
Wie Sie sehen können, zeigt die Option -D alle wiederholten Zeilen in der Ausgabe an, einschließlich aller Wiederholungen. Um eine bessere Trennung zu erreichen, können Sie nach jeder Gruppe von wiederholten Zeilen eine leere Zeile haben, was mit der Option — alles wiederholt Option.
uniq –all-wiederholte[=METHOD] Datei1
Diese Option erfordert die Eingabe eines Methodennamens durch den Benutzer. Die Werte können sein voranstellen (um eine leere Zeile voranzustellen) oder separat (um eine leere Zeile hinzuzufügen). Zum Beispiel, hier ist diese Option in Aktion mit der Prepend-Methode.
Weiter geht es, wenn Sie möchten, dass das Tool nur eine doppelte Zeile pro Gruppe anzeigt, dann können Sie sich für die Option -d Option. Hier ist ein Beispiel dafür:
Es wurde eindeutig nur eine wiederholte Zeile aus jeder Gruppe in der Ausgabe angezeigt.
4. Wie man uniq dazu bringt, den Vergleich der ersten paar Felder zu vermeiden.
Manchmal, je nach Situation, wird die Ähnlichkeit von zwei Linien durch einen kleinen Teil dieser Linien definiert. Betrachten Sie beispielsweise den Inhalt der folgenden Datei:
Angenommen, die Zeilen werden aufgrund ihres zweiten Feldes (HTF oder FF) als ähnlich oder unterschiedlich angesehen, und Sie wollen dies an uniq übermitteln, dann kann dies mit Hilfe der Option -f Kommandozeilenoption.
uniq -f [number-of-fields-to-skip] [file-name]
Die Option -f erfordert die Übergabe einer Zahl, die die Anzahl der Felder angibt, die der Befehl überspringen soll. In unserem Fall können wir beispielsweise ‚1‘ als Argument an -f übergeben, da es nur das erste Feld ist, das uniq überspringen soll.
uniq -f 1 file1
Die Ausgabe zeigt deutlich, dass uniq sowohl die erste als auch die dritte Zeile aufgrund ihrer jeweiligen zweiten Felder als wiederholt betrachtet.
5. Wie man eine eindeutige Anzeige aller Zeilen erreicht, während Wiederholungsgruppen mit leerer Zeile getrennt werden.
Falls die Anforderung darin besteht, alle Zeilen anzuzeigen, während wiederkehrende Zeilengruppen durch eine leere Zeile getrennt werden, können Sie die Option –Gruppe Option. Wie bei der Option –all-repeated, die wir bereits besprochen haben, verlangt –group auch, dass Sie die Position der leeren Zeile angeben (Prepend, Append oder beides).
Hier ist ein Beispiel:
Beachten Sie, dass die Option -f, die wir bereits im vorherigen Abschnitt besprochen haben.
6. So machen Sie, dass uniq nur nicht wiederkehrende Zeilen druckt
Wie Sie inzwischen verstanden haben, zeigt der Befehl uniq standardmäßig nur wiederholte Zeilen in der Ausgabe an. Aber wenn Sie möchten, können Sie es stattdessen so machen, dass nur nicht wiederholte oder eindeutige Zeilen angezeigt werden. Dies kann mit Hilfe des -u Kommandozeilenoption.
uniq -u [file-name]
Also, in unserem Fall:
uniq -u file1
Hier ist ein Beispiel:
Beachten Sie, dass die Option -f, die wir bereits in Abschnitt/Punktzahl 4 besprochen haben.
7. Wie man uniq dazu bringt, den Vergleich der eingestellten Anzahl von Anfangszeichen zu vermeiden.
In einem unserer früheren Beispiele haben wir besprochen, wie Sie Uniq-Sprungfelder erstellen können. Wenn Sie möchten, können Sie das Werkzeug jedoch auch zwingen, eine bestimmte Anzahl von Anfangszeichen zu überspringen. Auf diese Funktion kann über die Funktion -s Kommandozeilenoption.
uniq -s [number-of-char] dateiname
Angenommen, die Datei enthält beispielsweise folgende Zeilen:
Wenn Sie nun möchten, dass uniq die ersten 4 Zeichen in jeder Zeile vor dem Vergleich überspringt, dann kann dies auf folgende Weise geschehen:
uniq -s 4 file1
Hier ist der obige Befehl in Aktion:
So können Sie sehen, dass die vierte Zeile (faq_forge), die ursprünglich dort war, in der Ausgabe übersprungen wurde. Dies liegt daran, dass nach dem Überspringen der ersten vier Zeichen die dritte und vierte Zeile gleich waren und somit von uniq als wiederholt betrachtet werden.
8. So beschränken Sie den Vergleich auf die eingestellte Anzahl von Zeichen
Ähnlich wie beim Überspringen von Zeichen können Sie auch uniq bitten, den Vergleich auf eine bestimmte Anzahl von Zeichen zu beschränken. Dazu müssen Sie die Option -w Kommandozeilenoption.
uniq -w [Anzahl der Zeichen] [Dateiname]
Angenommen, die Datei enthält beispielsweise die folgenden Zeilen:
Wenn es nun darum geht, den Vergleich auf die ersten 3 Zeichen zu beschränken, dann kann dies auf folgende Weise geschehen:
uniq -w 3 file1
Hier ist der obige Befehl in Aktion:
Da die ersten 3 Zeichen der dritten und vierten Zeile gleich sind, wurden diese Zeilen als wiederholt betrachtet. Daher wird in der Ausgabe nur das dritte angezeigt.
9. Wie man den einzigartigen Vergleichsfall unempfindlich macht
Standardmäßig ist der Vergleich, den uniq durchführt, von Natur aus case-sensitiv. Sie können den Prozess jedoch mit Hilfe der Option -i Kommandozeilenoption.
Betrachten Sie zum Beispiel den gleichen Fall, den wir im vorherigen Abschnitt besprochen haben, nur dass die vierte Zeile mit dem Kapital H, O und W beginnt.
Wenn Sie nun versuchen, den gleichen Befehl auszuführen, den wir im vorherigen Abschnitt verwendet haben, werden Sie feststellen, dass die Ausgabe unterschiedlich ist:
Das liegt daran, dass die ersten drei Zeichen der dritten und vierten Zeile für uniq aufgrund ihres Falles unterschiedlich sind. In Situationen, in denen dies der Fall ist, können Sie die Groß-/Kleinschreibung des Vergleichs mit der Befehlszeilenoption -i unempfindlich machen.
10. Wie man eine eindeutige Ausgabe NUL-bedingt macht
Standardmäßig ist die Ausgabe, die uniq produziert, mit Zeilenumbruch beendet. Wenn Sie jedoch möchten, können Sie stattdessen eine NUL-beendete Ausgabe haben (nützlich beim Umgang mit uniq in Skripten). Dies kann durch den Einsatz der -z Kommandozeilenoption.
uniq -z [Dateiname]
Fazit
Wir haben so ziemlich alle Befehlszeilenoptionen, die der uniq-Befehl bietet, abgedeckt, also üben Sie einfach, was auch immer wir hier besprochen haben, und Sie sollten eine solide Vorstellung davon bekommen, wie uniq funktioniert und welche Funktionen es bietet. Wie immer, gehen Sie im Falle einer Anfrage oder eines Zweifels zuerst die Man Page des Befehls durch.