GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux Uniq Command Tutorial für Anfänger (10 Beispiele)

Wenn Sie ein Linux-Befehlszeilenbenutzer sind und Ihre Arbeit das Spielen mit Textdateien beinhaltet, sollten Sie wissen (falls nicht bereits), dass es viele Befehlszeilenprogramme gibt, die Ihnen in verschiedenen Situationen eine große Hilfe sein können. Beispielsweise gibt es ein Tool namens „uniq“, das sich wiederholende 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 erwähnten Beispiele und Anweisungen auf Ubuntu 16.04LTS getestet wurden.

Linux-Uniq-Befehl

Wie bereits eingangs erwähnt, meldet der Befehl uniq wiederholte Zeilen oder lässt sie weg. Hier ist die allgemeine Syntax dieses Befehls:

uniq [OPTION]... [EINGABE [AUSGABE]]

Gemäß der Manpage des Dienstprogramms:"Filtern Sie benachbarte übereinstimmende Zeilen von INPUT (oder Standardeingabe) und schreiben Sie in OUTPUT (oder Standardausgabe). Ohne Optionen werden übereinstimmende Zeilen mit dem ersten Vorkommen zusammengeführt."

Im Folgenden finden Sie einige Beispiele, die Ihnen helfen, das Tool besser zu verstehen.

1. Wie man wiederholte Zeilen mit dem Uniq-Befehl löscht

Angenommen, die Datei enthält die folgenden Zeilen:

Natürlich wird jede Zeile wiederholt. Lassen Sie uns nun Uniq auf dieser Datei ausführen und sehen, was passiert.

uniq file1

Wie Sie sehen können, enthält die vom Befehl erzeugte Ausgabe keine wiederholten Zeilen. Bitte beachten Sie, dass die Originaldatei – in unserem Fall „Datei1“ – davon 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 uniq in der Ausgabe anzeigen lassen, wie oft eine Zeile wiederholt wird. Dies kann mit -c erfolgen Befehlszeilenoption. Beispielsweise der folgende Befehl:

uniq -c file1

erzeugt die folgende Ausgabe:

Wie Sie sehen können, wird die Anzahl der Wiederholungen für jede Zeile in der Ausgabe vorangestellt.

3. Wie man mit uniq nur doppelte Zeilen druckt

Um uniq nur doppelte Zeilen drucken zu lassen, verwenden Sie -D Befehlszeilenoption. Angenommen, file1 enthält jetzt unten eine zusätzliche Zeile (beachten Sie, dass diese Zeile nicht wiederholt wird).

Wenn ich jetzt den folgenden Befehl ausführe:

uniq -D file1

Die folgende Ausgabe wird erzeugt:

Wie Sie sehen können, bewirkt die Option -D, dass uniq alle wiederholten Zeilen in der Ausgabe anzeigt, einschließlich aller ihrer Wiederholungen. Zur besseren Trennung können Sie nach jeder Gruppe wiederholter Zeilen eine Leerzeile einfügen, was mit --all-repeated erreicht werden kann Option.

uniq --all-repeated[=METHODE] file1

Diese Option erfordert die Eingabe eines Methodennamens durch den Benutzer. Die Werte könnten vorangestellt werden (um eine leere Zeile voranzustellen) oder trennen (um eine leere Zeile anzuhängen). Hier ist zum Beispiel diese Option in Aktion mit prepend Methode.

Weiter, wenn Sie möchten, dass das Tool nur eine doppelte Zeile pro Gruppe anzeigt, dann können Sie sich für das -d entscheiden Möglichkeit. Hier ist ein Beispiel dafür:

Offensichtlich wurde 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 zweier Linien durch einen kleinen Teil dieser Linien definiert. Betrachten Sie beispielsweise den Inhalt der folgenden Datei:

Angenommen, die Zeilen werden basierend auf ihrem zweiten Feld (HTF oder FF) als ähnlich oder unterschiedlich angesehen und Sie möchten dies an uniq übermitteln, dann kann dies mit -f erfolgen Befehlszeilenoption.

uniq -f [number-of-fields-to-skip] [file-name]

Bei der Option -f müssen Sie eine Zahl übergeben, die die Anzahl der Felder darstellt, 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 basierend auf ihren jeweiligen zweiten Feldern als wiederholt angesehen hat.

5. Wie man uniq dazu bringt, alle Zeilen anzuzeigen, während sich wiederholende Gruppen durch eine leere Zeile getrennt werden

Falls es erforderlich ist, alle Zeilen anzuzeigen, während sich wiederholende Gruppen von Zeilen durch eine Leerzeile getrennt werden, dann können Sie die --group verwenden Möglichkeit. Wie das --all-repeat Option, die wir bereits besprochen haben, --group erfordert außerdem, dass Sie die Position der Leerzeile angeben (voranstellen , anhängen , oder beides ).

Hier ist ein Beispiel:

Beachten Sie, dass wir die Option -f bereits im vorherigen Abschnitt besprochen haben.

6. Wie man uniq dazu bringt, nur sich nicht wiederholende Zeilen zu drucken

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 stattdessen nur nicht wiederholte oder eindeutige Zeilen anzeigen. Dies kann mit -u erfolgen Befehlszeilenoption.

uniq -u [file-name]

Also in unserem Fall:

uniq -u Datei1

Hier ist ein Beispiel:

Beachten Sie, dass wir die Option -f bereits in Abschnitt/Punkt Nummer 4 besprochen haben.

7. Wie man uniq dazu bringt, den Vergleich der festgelegten Anzahl von Anfangszeichen zu vermeiden

In einem unserer früheren Beispiele haben wir besprochen, wie Sie eindeutige Skip-Felder erstellen können. Wenn Sie möchten, können Sie das Tool jedoch auch dazu zwingen, eine bestimmte Anzahl von Anfangsbuchstaben zu überspringen. Auf diese Funktion kann mit -s zugegriffen werden Befehlszeilenoption.

uniq -s [Zeichenzahl] Dateiname

Angenommen, die Datei enthält beispielsweise die folgenden Zeilen:

Wenn Sie nun möchten, dass uniq die ersten 4 Zeichen in jeder Zeile vor dem Vergleich überspringt, dann können Sie dies folgendermaßen tun:

uniq -s 4 Datei1

Hier ist der obige Befehl in Aktion:

Sie können also 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 die vierte Zeile gleich waren und daher von uniq als wiederholt angesehen wurden.

8. So beschränken Sie den Vergleich auf die festgelegte Anzahl von Zeichen

Ähnlich wie Sie Zeichen überspringen, können Sie auch uniq bitten, den Vergleich auf eine festgelegte Anzahl von Zeichen zu beschränken. Dazu müssen Sie das -w verwenden Befehlszeilenoption.

uniq -w [Anzahl der Zeichen] [Dateiname]

Angenommen, die Datei enthält beispielsweise die folgenden Zeilen:

Wenn nun die Anforderung darin besteht, den Vergleich auf die ersten 3 Zeichen zu beschränken, dann kann dies auf folgende Weise geschehen:

uniq -w 3 Datei1

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 nur der dritte in der Ausgabe angezeigt.

9. So machen Sie Groß- und Kleinschreibung bei uniq-Vergleichen unempfindlich

Standardmäßig wird bei dem von uniq durchgeführten Vergleich die Groß-/Kleinschreibung beachtet. Mit -i können Sie jedoch die Groß-/Kleinschreibung ignorieren Befehlszeilenoption.

Betrachten Sie zum Beispiel denselben Fall, den wir im vorherigen Abschnitt besprochen haben, nur dass die vierte Zeile mit den großen H, O und W beginnt.

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

Das liegt daran, dass die ersten drei Zeichen der dritten und der vierten Zeile aufgrund ihrer Groß-/Kleinschreibung für uniq unterschiedlich sind. In solchen Situationen können Sie die Groß-/Kleinschreibung mit der Befehlszeilenoption -i ignorieren.

10. Wie man eine uniq-Ausgabe NUL-terminiert macht

Standardmäßig ist die Ausgabe, die uniq erzeugt, mit einem Zeilenumbruch beendet. Wenn Sie jedoch möchten, können Sie stattdessen eine NUL-terminierte Ausgabe haben (nützlich beim Umgang mit uniq in Skripten). Dies kann mit dem -z ermöglicht werden Befehlszeilenoption.

uniq -z  [Dateiname]

Fazit

Wir haben so ziemlich alle Befehlszeilenoptionen behandelt, die der uniq-Befehl bietet, also üben Sie einfach alles, was wir hier besprochen haben, und Sie sollten eine solide Vorstellung davon bekommen, wie uniq funktioniert und welche Funktionen es bietet. Gehen Sie bei Fragen oder Zweifeln wie immer zuerst die Manpage des Befehls durch.


Linux
  1. Linux-CD-Befehls-Tutorial für Anfänger (8 Beispiele)

  2. Linux-Kommando-Tutorial für Anfänger (5 Beispiele)

  3. Linux Uniq Command Tutorial für Anfänger (10 Beispiele)

  4. Linux-df-Befehls-Tutorial für Anfänger (8 Beispiele)

  5. Linux Date Command Tutorial für Anfänger (8 Beispiele)

Linux Who Command Tutorial für Anfänger (8 Beispiele)

Linux nl Command Tutorial für Anfänger (7 Beispiele)

Linux-nm-Befehls-Tutorial für Anfänger (10 Beispiele)

Linux OD Command Tutorial für Anfänger (6 Beispiele)

Linux w Command Tutorial für Anfänger (5 Beispiele)

Linux ss Command Tutorial für Anfänger (8 Beispiele)