Der Uniq-Befehl ist hilfreich, um doppelte Einträge in einer Datei zu entfernen oder zu erkennen. Dieses Tutorial erklärt einige der am häufigsten verwendeten uniq-Befehlszeilenoptionen, die Sie möglicherweise hilfreich finden.
Die folgende Testdatei wird in einigen Beispielen verwendet, um zu verstehen, wie der uniq-Befehl funktioniert.
$ cat test aa aa bb bb bb xx
1. Grundlegende Verwendung
Syntax:
$ uniq [-options]
Wenn beispielsweise der Befehl uniq ohne Option ausgeführt wird, entfernt er doppelte Zeilen und zeigt eindeutige Zeilen an, wie unten gezeigt.
$ uniq test aa bb xx
2. Zählen Sie die Anzahl der Vorkommen mit der Option -c
Diese Option zählt das Auftreten von Zeilen in der Datei.
$ uniq -c test 2 aa 3 bb 1 xx
3. Nur doppelte Zeilen mit der Option -d drucken
Diese Option dient dazu, nur doppelte wiederholte Zeilen in der Datei zu drucken. Wie Sie unten sehen, wurde die Zeile „xx“ nicht angezeigt, da sie in der Testdatei nicht doppelt vorhanden ist.
$ uniq -d test aa bb
Das obige Beispiel zeigte alle doppelten Zeilen, aber nur einmal. Diese Option -D druckt jedoch alle doppelten Zeilen in der Datei. Beispielsweise war die Zeile „aa“ zweimal in der Testdatei vorhanden, sodass der folgende uniq-Befehl die Zeile „aa“ zweimal in dieser Ausgabe anzeigte.
$ uniq -D test aa aa bb bb bb
4. Nur eindeutige Zeilen mit der Option -u drucken
Mit dieser Option werden nur eindeutige Zeilen in der Datei gedruckt.
$ uniq -u test xx
Wenn Sie doppelte Zeilen aus einer Datei mit einem bestimmten Muster löschen möchten, können Sie den Befehl sed delete verwenden.
5. Beschränken Sie den Vergleich auf „N“ Zeichen mit der Option -w
Diese Option beschränkt den Vergleich nur auf die ersten angegebenen „N“-Zeichen. Verwenden Sie für dieses Beispiel die folgende test2-Eingabedatei.
$ cat test2 hi Linux hi LinuxU hi LinuxUnix hi Unix
Der folgende uniq-Befehl mit der Option „w“ vergleicht die ersten 8 Zeichen der Zeilen in der Datei und gibt dann mit der Option „c“ die Anzahl der Vorkommen der Dateizeilen aus.
$ uniq -c -w 8 testNew 3 hi Linux 1 hi Unix
Der folgende uniq-Befehl mit der Option „w“ vergleicht die ersten 8 Zeichen der Zeilen in der Datei und druckt dann mit der Option „D“ alle doppelten Zeilen der Datei.
$ uniq -D -w 8 testNew hi Linux hi LinuxU hi LinuxUnix
6. Vermeiden Sie es, die ersten „N“-Zeichen mit der Option -s zu vergleichen
Diese Option überspringt den Vergleich der ersten angegebenen „N“-Zeichen. Verwenden Sie für dieses Beispiel die folgende test3-Eingabedatei.
$ cat test3 aabb xxbb bbc bbd
Der folgende uniq-Befehl mit Option 's' überspringt den Vergleich der ersten 2 Zeichen der Zeilen in der Datei und druckt dann mit der Option 'D' alle doppelten Zeilen der Datei.
Hier würden die ersten 2 Zeichen, d. h. „aa“ in der 1. Zeile und „xx“ in der 2. Zeile, nicht verglichen, und dann wären die nächsten 2 Zeichen „bb“ in beiden Zeilen gleich, würden also als doppelte Zeilen angezeigt.
$ uniq -D -s 2 test3 aabb xxbb
7. Vermeiden Sie es, die ersten „N“ Felder mit der Option -f zu vergleichen
Diese Option überspringt den Vergleich der ersten angegebenen 'N' Felder von Zeilen in der Datei.
$ cat test2 hi hello Linux hi friend Linux hi hello LinuxUnix
Der folgende uniq-Befehl mit der Option „f“ überspringt den Vergleich der ersten 2 Zeilenfelder in der Datei und druckt dann mit der Option „D“ alle doppelten Zeilen der Datei.
Hier würden die ersten 2 Felder, d. h. „hi hallo“ in der 1. Zeile und „hi Freund“ in der 2. Zeile, nicht verglichen und das nächste Feld „Linux“ in beiden Zeilen wäre gleich, würde also als doppelte Zeilen angezeigt.
$ uniq -D -f 2 test2 hi hello Linux hi friend Linux