BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Mehrfach vorhandene Zeilen einer Datei entfernen

In einer sortierten Textdatei lassen sich identische Zeilen entfernen oder zählen. Verwendet man uniq ohne Optionen, so werden alle mehrfach vorhandenen Zeilen entfernt:

# cat test
AAA
aaa
aaa
aaa
bbb
ccc
ccc
# uniq test
AAA
aaa
bbb
ccc

Mit der -c Option kann die Anzahl identischer Zeilen gezählt werden:

# uniq -c test
   1 AAA
   3 aaa
   1 bbb
   2 ccc

Soll die Gross-/Kleinschreibung ignoriert werden, kann die -i Option verwendet werden:

# uniq -ci test
   4 AAA
   1 bbb
   2 ccc

Mit der -d Option werden nur mehrfach vorhandenen Zeilen angezeigt, mit der -u Option nur solche, die nur einmal vorhanden sind.

# uniq -d test
aaa
cc
# uniq -u test
AAA
bbb

Auf FreeBSD und OpenBSD ist uniq im Basissystem vorhanden, allerdings kann die -i Option nur auf FreeBSD verwendet werden. Mehr Informationen zu uniq findet man in der Manpage uniq(1).

Comments (1)  Permalink

Comments

Aarno @ 25.10.2008 14:16 UTC
Wenn die Datei noch nicht sortiert ist macht man naiverweise:
$ sort test | uniq

schneller gehts mit:
$ sort -u test

-Aarno
No new comments allowed (anymore) on this post.