Możesz użyć polecenia sortz opcją --unique:
sort -u input-file
Jeśli chcesz zapisać wynik do PLIKU zamiast standardowego wyjścia, użyj opcji --output=FILE:
sort -u input-file -o output-file
Polecenie uniqmożna również zastosować. W tym przypadku identyczne linie muszą być konsekwentne, więc dane wejściowe należy posortować wstępnie - dzięki @RonJohn za tę notatkę:
sort input-file | uniq > output-file
Podoba mi się sortpolecenie dla podobnych przypadków, ze względu na jego prostotę, ale jeśli pracujesz z dużymi tablicami, awkpodejście z odpowiedzi John1024 może być silniejsze. Oto porównanie czasowe między wspomnianymi podejściami zastosowanymi w pliku (na podstawie powyższego przykładu) z prawie 5 milionami linii:
$ cat input-file | wc -l
20000000
$ TIMEFORMAT=%R
$ time sort -u input-file | wc -l
64
7.495
$ time sort input-file | uniq | wc -l
64
7.703
$ time awk '!a[$0]++' input-file | wc -l # from John1024's answer
64
1.271
$ time datamash rmdup 1 < input-file | wc -l # from αғsнιη's answer
64
0.770
Kolejną znaczącą różnicą jest , że wspomniane przez @Ruslan :
sort -uwypisze wynik dopiero po zakończeniu wprowadzania, podczas gdy to awkpolecenie wydrukuje każdą nową linię wyniku w locie (może to być ważniejsze dla wprowadzania potokowego niż pliku).
Oto ilustracja:

W powyższym przykładzie pętla (pokazana poniżej) generuje 500 losowych kombinacji, każda o długości trzech znaków, liter AD. Te kombinacje są przesyłane do awklub sort.
for i in {1..500}; do cat /dev/urandom | tr -dc A-D | head -c 3; echo; done