Habe am sonntäglichen Nachmittag bei Eiscafe und Perl-Buch wieder mal das Thema unique Output gestreift.
Wer die Kommandozeile liebt, der kennt zB die Pipe Kette
cat /etc/profile | sort | uniq
uniq ist eigentlich recht nützlich, bloß will es vorher ein sort haben, welches die natürliche Ordnung der Dinge durcheinander haut.
/etc/profile ist ein realitätsfremdes Beispiel, doch man sieht den Effekt: Zuerst werden die Zeilen sortiert und dann Duplikate verworfen.
In chronologisch geführten Logs ist das aber schlecht: Ich will alte Dinge zuerst sehen, aber nicht x Male diesselbe Zeile.
Hier hilft - ist eh klar - Perl und seine Einzeiler:
cat /etc/profile | perl -e 'print grep {!$u{$_}++} <>'
Dieses tut das gleiche, schneller, NUR in seiner natürlichen Ordnung!
P.S. Und wer wissen will, was das heißt, der gehört ins Forum Programmierung!
(Und ja, in beiden Fällen kann man das cat eliminieren.)
Ach ja, und jetzt noch ungeordnet & unsortiert:
cat /etc/profile | perl -e '@u{<>}=(); print keys %u'