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

So verwenden Sie den Befehl uniq zum Verarbeiten von Listen in Linux

Wir haben den Sortierbefehl in unserem vorherigen Artikel gesehen, aber das Sortieren einer Datei führt oft zu vielen doppelten Zeilen nebeneinander. Es wird zu schwierig, diese Zeilen richtig anzuzeigen.

In diesem Szenario ist der uniq Befehl hilft Ihnen, doppelte Zeilen einmal in der Ausgabe zu drucken. Es verwirft tatsächlich die Zeilen, die wiederholt werden, und druckt die erste benachbarte wiederholte Zeile, wodurch wir die Ausgabe richtig anzeigen können.

Die Zeilen, die in der Eingabedatei für uniq verwendet werden Der Befehl darf weder länger als 2048 Byte sein (einschließlich Zeilenumbruchzeichen) noch Nullzeichen enthalten.

Syntax

uniq [OPTION]... [INPUT [OUTPUT]]

Beispiele

Nachfolgend finden Sie eine Reihe von Beispielen, beginnend ohne Optionen. Wir werden mehrere Anwendungsfälle durchgehen. Einige beinhalten nur uniq , und andere sind auf zusätzliche Befehle angewiesen.

Ohne Option

Unten ist eine Datei namens file2 , die einige Daten enthält. Beachten Sie, dass diese Datei nicht sortiert ist und die doppelten Zeilen nicht nebeneinander liegen. Vor der Verwendung von uniq Befehl mit dieser Datei, sollten wir sort es. Im Beispiel habe ich den uniq ausprobiert Befehl mit der Originaldatei, aber es gibt nur die Ausgabe so aus, wie sie ist, ähnlich wie bei cat Ausgang. Im nächsten Beispiel nehmen wir die Ausgabe von sort Befehl und leiten Sie ihn mit uniq weiter Befehl. Dies hilft uns, das Verhalten von uniq zu verstehen Befehl:

$ cat file2
ChhatrapatiShahuMaharaj
Dr.B.R.Ambedkar
Budhha
Dr.B.R.Ambedkar
Budhha
Dr.B.R.Ambedkar
Budhha

$ uniq file2
ChhatrapatiShahuMaharaj
Dr.B.R.Ambedkar
Budhha
Dr.B.R.Ambedkar
Budhha
Dr.B.R.Ambedkar
Budhha

$ sort file2
Budhha
Budhha
Budhha
ChhatrapatiShahuMaharaj
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar

$ sort file2 | uniq
Budhha
ChhatrapatiShahuMaharaj
Dr.B.R.Ambedkar

Mit der Option -c, --count

Unten, im nächsten Beispiel, verwenden wir den -c Option zum Zählen der wiederholten Zeilen. Der uniq Befehlsdrucke, die als Präfix mit der Zeile zählen. Das folgende Beispiel sagt uns, dass die erste Zeile dreimal, die zweite Zeile einmal und die dritte Zeile dreimal wiederholt wird:

$ sort file2 | uniq -c
    3 Budhha
    1 ChhatrapatiShahuMaharaj
    3 Dr.B.R.Ambedkar

Mit der Option -d, --repeat

Das -d Option druckt nur Zeilen, die sich wiederholen. Nicht doppelte Zeilen werden verworfen. Deshalb Linie ChhatrapatiShahuMaharaj wurde im folgenden Beispiel verworfen:

$ sort file2 | uniq -d
Budhha
Dr.B.R.Ambedkar

Im folgenden Beispiel habe ich den -c verwendet Option, um zu überprüfen, ob das -d Option druckt nur die wiederholten Zeilen oder nicht:

$ sort file2 | uniq -cd
    3 Budhha
    3 Dr.B.R.Ambedkar

Mit der Option -D, --all-repeat

Das -D Option druckt wiederholte Zeilen und verwirft die nicht doppelten Zeilen. Im folgenden Beispiel der uniq Befehl druckt nur alle doppelten Zeilen und verwirft nicht doppelte Zeilen:

$ sort file2 | uniq -D
Budhha
Budhha
Budhha
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar

Mit -u, --unique Option

Das Gegenteil der obigen Option ist der -u Option druckt eindeutige Zeilen, d. h. nicht doppelte Zeilen. Daher wird im folgenden Beispiel ChhatrapatiShahuMaharaj gedruckt als Ausgabe:

$ sort file2 | uniq -u
ChhatrapatiShahuMaharaj

Mit der Option -i, --ignore-case

Mit dem -i Option können wir die Groß-/Kleinschreibung von Zeichen ignorieren. Unten habe ich eine Ausgabe des uniq gegeben Befehl mit und ohne -i Vergleichsoption:

$ cat file3
aaaa
aaaa
AAAA
AAAA
bbbb
BBBB

$ uniq file3
aaaa
AAAA
bbbb
BBBB

$ uniq -i file3
aaaa
bbbb

Mit -f, --skip-fields=N

Manchmal müssen wir einige Felder überspringen, um doppelte Zeilen zu filtern. Dies ist mit dem -f möglich Möglichkeit. Im folgenden Beispiel überspringen wir das erste Feld (erste Spalte), um die doppelten Zeilen aus dem zweiten Feld zu vergleichen. Ich habe beide Beispiele gegeben, mit und ohne -f Option, um das Verhalten der Option besser zu verstehen:

$ cat file5
Amit aaaa
Ajit aaaa
Advi bbbb
Kaju bbbb

$ uniq file5
Amit aaaa
Ajit aaaa
Advi bbbb
Kaju bbbb

$ uniq -f 1 file5
Amit aaaa
Advi bbbb

[ Den Lesern gefiel auch:Arbeiten mit Pipes auf der Linux-Befehlszeile ]

Mit Option -s, --skip-char=N

Genau wie das Feld können wir auch Zeichen überspringen, indem wir das -s verwenden Möglichkeit. Bitte beachten Sie, dass der uniq druckt nur die erste doppelte Zeile und verwirft andere doppelte Zeilen. Daher 33aa und 55bb wurden verworfen. Hier ist das Beispiel:

$ cat file4
22aa
33aa
44bb
55bb

$ uniq file4
22aa
33aa
44bb
55bb

$ uniq -s 2 file4
22aa
44bb

Mit Option -w, --check-chars=N

Genau wie beim Überspringen von Zeichen können wir auch Zeichen mit dem -w berücksichtigen Option, wie im Beispiel:

$ cat file6
aa12
aa34
bb56
bb78

$ uniq file6
aa12
aa34
bb56
bb78

$ uniq -w 2 file6
aa12
bb56

Mit der Option --version

Verwenden Sie die --version Option, um die Version des uniq zu überprüfen Befehl.

$ uniq --version
uniq (GNU coreutils) 8.4
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Richard M. Stallman and David MacKenzie.

[ Kostenloser Download:Spickzettel für fortgeschrittene Linux-Befehle. ] 

Abschluss

uniq erkennt keine wiederholten Linien, es sei denn, sie sind benachbart. Der uniq Der Befehl kann die Anzahl der wiederholten Zeilen zählen und ausgeben. Genau wie doppelte Zeilen können wir auch eindeutige Zeilen (nicht doppelte Zeilen) filtern und die Groß- und Kleinschreibung ignorieren. Wir können Felder und Zeichen überspringen, bevor wir doppelte Zeilen vergleichen, und auch Zeichen zum Filtern von Zeilen berücksichtigen.

Nach Überprüfung des mehrfachen uniq Befehlsoptionen, möchte ich ein kleines Bild teilen, um es als Referenz bei Ihnen zu behalten.


Linux
  1. So verwenden Sie den Linux-Befehl sed

  2. So verwenden Sie den Linux-Grep-Befehl

  3. So verwenden Sie den Verlaufsbefehl unter Linux

  4. So verwenden Sie den id-Befehl unter Linux

  5. So verwenden Sie den Befehl „screen“ unter Linux

So verwenden Sie den Linux-Ping-Befehl

So verwenden Sie den fd-Befehl auf einem Linux-System

Wie verwende ich den wget-Befehl unter Linux?

Wie verwende ich den xargs-Befehl unter Linux?

So verwenden Sie den RPM-Befehl unter Linux

So verwenden Sie den which-Befehl in Linux