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.