5.3 sort und uniq – sortiert und einzigartig
sort und uniq
Als Shell-Anwender kommt man recht oft – auch wenn man es aus der Windows-Welt kommend nicht so ganz glauben mag – in die Situation, bestimmte Zeilen von Dateien zu sortieren und redundante Datensätze zu entfernen.
Gegeben sei folgende Beispieldatei, die zwei Spalten beinhaltet. Die erste gibt eine Nummer an, die dem Protokoll (Spalte 2) zugeordnet ist.
Einige Dateneinträge sind redundant. Im Folgenden wollen wir diese Datensätze ordnen lassen.
001 ICMP 002 IGMP 089 OSPF 003 GGP 006 TCP 022 IDP 022 IDP 000 IP 012 PUP 017 UDP 255 RAW
Listing 5.7 Die Beispieldatei
sort hilft uns nun, diese Daten nach einer numerischen Reihenfolge korrekt zu sortieren. (Ohne führende Nullen gibt es allerdings Probleme!) Was nun noch fehlt, ist, dass die redundanten Datensätze entfernt werden, besser gesagt, dass jeder von diesen Datensätzen nur einmal vorkommt. Dies wird mittels uniq bewerkstelligt.
Sofern man nicht mit Pipes arbeitet, werden die Aufrufe folgendermaßen abgewickelt:
$ sort Beispieldatei | uniq 000 IP 001 ICMP 002 IGMP 003 GGP 006 TCP 012 PUP 017 UDP 022 IDP 089 OSPF 255 RAW
Listing 5.8 Die intelligente Lösung