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:

Löschen von wiederholten Zeilen mit dem Befehl uniq

Es ist klar, dass jede Zeile wiederholt wird. Lassen Sie uns nun Uniq auf dieser Datei ausführen und sehen, was passiert.

uniq file1

Ergebnis des Löschens von Zeilen mit uniq

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:

Anzeige der Anzahl der Wiederholungen für jede Zeile

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).

Duplikatzeilen mit uniq drucken

Jetzt, wenn ich den folgenden Befehl ausführe:

uniq -D file1

Die folgende Ausgabe wird ausgegeben:

Ergebnis zeigt nur doppelte Zeilen an

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.

Aktion mit 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:

Doppelte Zeilen pro Gruppe

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:

make uniq vermeidet den Vergleich der ersten paar Felder

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

Ergebnis für make uniq vermeidet den Vergleich der ersten paar Felder

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:

machen Sie eine eindeutige Anzeige aller Zeilen, während Sie Wiederholungsgruppen mit leerer Zeile trennen.

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:

make uniq druckt nur nicht wiederkehrende Zeilen.

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:

make uniq vermeidet den Vergleich der eingestellten Anzahl von Anfangszeichen

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:

make uniq vermeidet den Vergleich der eingestellten Anzahl von Anfangszeichen Ergebnis

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:

Grenzwertvergleich auf die eingestellte Anzahl von Zeichen beschränken

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:

Ergebnis von Beispiel 8

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.

uniq Vergleichsfall unempfindlich machen

Wenn Sie nun versuchen, den gleichen Befehl auszuführen, den wir im vorherigen Abschnitt verwendet haben, werden Sie feststellen, dass die Ausgabe unterschiedlich ist:

Ergebnis 9

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.

Ergebnis für die ersten drei Zeichen

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.

Das könnte dich auch interessieren …