Der Befehl uniq vergleicht jede Eingabezeile mit ihrer Vorgängerzeile. Er kann benachbarte Gruppen gleicher Zeilen zusammenfassen, zählen oder auswählen, sucht jedoch nicht in der gesamten Datei nach getrennten Duplikaten.
Text-Fu · Lektion 14
uniq (Eindeutig)
Lerne, benachbarte Gruppen gleicher Zeilen mit uniq zusammenzufassen, zu zählen oder zu filtern.
Benachbarte doppelte Zeilen zusammenfassen
Angenommen, reading.txt enthält gruppierte Werte:
book
book
paper
paper
article
article
magazine
Führe uniq ohne Filteroption aus, um eine repräsentative Zeile aus jeder benachbarten Gruppe auszugeben:
$ uniq reading.txt
book
paper
article
magazine
Die Eingabedatei bleibt unverändert, weil das Ergebnis nach stdout geschrieben wird.
Was bewirkt uniq reading.txt standardmäßig?
Benachbarte Gruppen zählen
Mit -c stellst du jeder Ausgabegruppe die Anzahl ihrer aufeinanderfolgenden Eingabezeilen voran:
$ uniq -c reading.txt
2 book
2 paper
2 article
1 magazine
Diese Werte sind Lauflängen und keine globalen Häufigkeiten, sofern nicht zuvor alle gleichen Zeilen nebeneinander angeordnet wurden.
Was beschreibt die Zahl von uniq -c?
Einmalige oder wiederholte Gruppen auswählen
Mit -u gibst du nur Gruppen aus, die genau eine Zeile enthalten:
$ uniq -u reading.txt
magazine
Mit -d gibst du eine repräsentative Zeile aus jeder benachbarten Gruppe mit mehr als einer Zeile aus:
$ uniq -d reading.txt
book
paper
article
GNU uniq -D gibt jede Zeile aus wiederholten Gruppen aus, während das kleine -d ihren Wert jeweils einmal ausgibt.
Welcher Befehl gibt nur benachbarte Gruppen aus, die genau einmal vorkommen?
Welcher Befehl gibt für jede benachbarte Gruppe mit mehr als einem Vorkommen eine Zeile aus?
Getrennte Duplikate gruppieren
Sind gleiche Zeilen voneinander getrennt, bilden sie unterschiedliche Gruppen:
book
paper
book
paper
article
magazine
article
uniq erzeugt bei dieser Datei ein möglicherweise überraschendes Ergebnis:
$ uniq reading.txt
book
paper
book
paper
article
magazine
article
Keine Zeile wird zusammengefasst, da sich benachbarte Werte unterscheiden. Sortiere zuerst, wenn eine veränderte Reihenfolge zulässig ist und gleiche vollständige Zeilen gruppiert werden sollen:
$ sort reading.txt | uniq
article
book
magazine
paper
Verwende für beide Schritte eine einheitliche Locale und Vergleichsregel. sort -u reading.txt kann ebenfalls in einem Befehl sortieren und je gleichem Sortierschlüssel eine Zeile bewahren.
Gleiche Zeilen sind über reading.txt verteilt und die Ausgabereihenfolge darf sich ändern. Welche Pipeline erzeugt je vollständiger unterschiedlicher Zeile eine sortierte Kopie?
Ohne benannte Eingabedatei liest uniq von stdin und passt daher gut hinter sort. GNU-Optionen wie -i können Groß- und Kleinschreibung ignorieren; -f, -s und -w können Vergleichsbereiche überspringen oder begrenzen. Verwende sie nur, wenn Gleichheit über einen Teil jeder Zeile definiert werden soll.
Mit diesen Übungen kannst du das Gruppieren, Zählen und Filtern von Duplikaten praktisch trainieren:
- Linux uniq Befehl: Duplikate filtern – Kombiniere
uniqmitsort, um doppelte Zeilen zu erkennen, zu filtern und zu analysieren. - Linux sort Befehl: Text sortieren – Ordne mit
sortTextzeilen als Vorbereitung auf den wirksamen Einsatz vonuniq. - Wortanzahl und Sortierung – Nutze
wcundsort, um Zeilen, Wörter und Zeichen zu zählen, häufige Muster zu finden und Daten effizient zu sortieren.
Lektion abgeschlossen
Sie haben uniq (Eindeutig) abgeschlossen
Du kannst nun benachbarte Gruppen gleicher Zeilen mit uniq analysieren.
Fasse jede benachbarte Duplikatgruppe zu einer Zeile zusammen.
Zähle aufeinanderfolgende Vorkommen mit
-c.Wähle einmalige Gruppen mit
-uaus.Wähle wiederholte Gruppen mit
-doder GNU-Daus.Sortiere zuerst, wenn getrennte Duplikate gruppiert werden müssen.
Lernfortschritt speichern
Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.
Kostenloses Konto erstellen