uniq(1) uniq(1)
NAME
uniq - Mehrfache Zeilen suchen (unique lines)
SYNTAX
uniq [option ...] [eingabedatei [ausgabedatei]]
BESCHREIBUNG
uniq sucht in einer Datei nach aufeinanderfolgenden gleichen Zeilen,
schreibt die Datei auf die Standardausgabe und läßt dabei die Wieder-
holungen weg. Nur bei aufeinanderfolgenden Zeilen können Übereinstim-
mungen festgestellt werden, d. h. die Eingabedatei muß sortiert sein.
OPTIONEN
Die Optionen -c, -d und -u dürfen nicht gleichzeitig angegeben werden.
Keine Option angegeben:
eingabedatei wird ausgegeben und Wiederholungen werden weggelas-
sen.
-c Alle Zeilen werden ohne Wiederholungen mit einer Dezimalzahl am
Zeilenanfang ausgegeben. Die Zahl gibt an, wie oft die entspre-
chende Zeile in eingabedatei nacheinander vorkommt. Die Zahl
steht rechtsbündig bis Spalte 4, der Zeileninhalt beginnt in
Spalte 6. uniq ignoriert zusätzlich gesetzte Optionen -u oder -d.
-d Nur die in eingabedatei mehrfach vorkommenden Zeilen werden
jeweils einmal ausgegeben.
-f m Die ersten m Felder ab Zeilenanfang, zusammen mit vor einem Feld
stehenden Tabulator- oder Leerzeichen, werden beim Vergleichen
der Zeilen nicht berücksichtigt. Ein Feld ist eine nichtleere
Zeichenfolge, die durch ein Tabulator- oder Leerzeichen vom Nach-
barfeld getrennt ist.
Dies entspricht der alten Option -m, die weiterhin unterstützt
wird, jedoch nicht mit der neuen Syntax (-f oder -s) vermischt
werden darf.
-f nicht angegeben:
Die Zeilen werden ab Zeilenanfang bzw. ab Zeichen n+1 (Option -s)
verglichen.
-s n Die ersten n Zeichen ab Zeilenanfang werden beim Vergleichen der
Zeilen nicht berücksichtigt.
Wird die Option -s zusammen mit der Option -f verwendet, so wer-
den die ersten n Zeichen nach dem m-ten Feld beim Vergleich nicht
berücksichtigt. Leerzeichen nach dem m-ten Feld werden nicht
ignoriert, sondern müssen im Wert n berücksichtigt werden.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
uniq(1) uniq(1)
Dies entspricht der alten Option +n, die weiterhin unterstützt
wird, jedoch nicht mit der neuen Syntax (-f oder -s) vermischt
werden darf.
-s nicht angegeben:
Die Zeilen werden ab Zeilenanfang bzw. ab Anfang von Feld m+1
(Option -f) verglichen.
-u Nur die Zeilen werden ausgegeben, die in eingabedatei nicht wie-
derholt vorkommen.
-- Ende der Optionenliste. Die Angabe ist nötig, wenn eingabedatei
mit - beginnt.
eingabedatei
Name der Datei, die untersucht werden soll. Wenn Sie für
eingabedatei einen Bindestrich - angeben, liest uniq von der
Standardeingabe.
eingabedatei nicht angegeben: uniq liest von der Standardein-
gabe.
ausgabedatei
Name der Datei, in welche die Ausgabe geschrieben werden soll.
Wenn Sie für ausgabedatei einen Bindestrich - angeben, schreibt
uniq auf die Standardausgabe.
ausgabedatei nicht angegeben: uniq schreibt auf die Standardaus-
gabe.
INTERNATIONALE UMGEBUNG
Die Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
texte.
LCCTYPE bestimmt die Zeichenklassen und die Zeichenkonvertierung.
Wenn LCMESSAGES oder LCCTYPE nicht oder als leere Zeichenkette defi-
niert ist, wird der Wert von LANG als Standardwert für die jeweils
nicht gesetzte oder leere Variable herangezogen. Ist auch LANG nicht
oder als leere Zeichenkette definiert, verhält sich das System so, als
wäre es nicht internationalisiert.
Die Umgebungsvariable LCALL bestimmt die gesamte internationale Umge-
bung. LCALL hat Vorrang vor allen anderen Umgebungsvariablen im
Bereich der Internationalisierung.
Hat eine der Variablen für die internationale Umgebung einen ungülti-
gen Wert, verhält sich das System so, als wäre keine Variable gesetzt.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
uniq(1) uniq(1)
BEISPIELE
Beispiel 1
Sie möchten eine Datei nach gleichen Zeilen durchsuchen, unabhängig
davon, wo diese in der Datei stehen. Für jede dieser Zeilen ist auszu-
geben, wie oft sie vorkommt.
$ sort datei | uniq -c
Beispiel 2
Sie möchten die 10 häufigsten Wörter der Datei text ausgeben lassen.
$ cat text | sed 's/[ ][ ]*/\
> /g' | sed '/^$/d' | sort | uniq -c | sort -rn | head
Erläuterung:
- Der erste sed-Aufruf erzeugt aus text eine Liste aller Wörter,
indem aufeinanderfolgende Tabs oder Leerzeichen durch ein Neue-
Zeile-Zeichen ersetzt werden. In den eckigen Klammern steht jeweils
ein Tabulator- und ein Leerzeichen.
- Der zweite sed-Aufruf löscht alle Leerzeilen.
- sort sortiert die erzeugte Liste nach ASCII.
- uniq -c entfernt aus der sortierten Liste mehrfache Zeilen und
schreibt vor alle übriggebliebenen Zeilen die Häufigkeit ihres Auf-
tretens.
- sort -rn sortiert diese Häufigkeitsliste rückwärts, d. h. die häu-
figste Zeile steht in der ersten, die seltenste in der letzten
Zeile.
- head gibt die ersten 10 Zeilen der Liste aus.
SIEHE AUCH
comm(1), sort(1).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98