Przejdź do głównej zawartości

uniq


  • uniq – narzędzie usuwające duplikaty wierszy, które występują bezpośrednio po sobie w danych.
  • Często używane w połączeniu z sort, aby uzyskać unikalne wiersze z danych.
  • Dostępne w większości dystrybucji Linuksa (GNU coreutils) oraz w systemach UNIX.

Okno terminala
uniq [opcje] [PLIK_WE] [PLIK_WY]
  • Bez podania plików działa na standardowym wejściu i wyjściu.

ParametrOpis
-c, --countPoprzedza każdy wiersz liczbą jego powtórzeń.
-d, --repeatedWypisuje tylko wiersze powtarzające się.
-DWypisuje wszystkie powtarzające się wiersze (nie tylko jeden egzemplarz).
-u, --uniqueWypisuje tylko wiersze unikalne (bez powtórzeń).
-i, --ignore-caseIgnoruje wielkość liter przy porównywaniu.
-f NPomija pierwsze N pól przy porównywaniu.
-s NPomija pierwsze N znaków przy porównywaniu.
-w NPorównuje maksymalnie N znaków w wierszu.
--helpWyświetla pomoc.
--versionWyświetla wersję programu.

Okno terminala
# 1) Usunięcie duplikatów w pliku (kolejne identyczne wiersze)
uniq dane.txt > dane_unikalne.txt
Okno terminala
# 2) Liczenie wystąpień każdego wiersza
uniq -c dane.txt
Okno terminala
# 3) Tylko powtarzające się wiersze
uniq -d dane.txt
Okno terminala
# 4) Unikalne wiersze bez względu na wielkość liter
uniq -i dane.txt
Okno terminala
# 5) Usunięcie wszystkich duplikatów niezależnie od położenia
sort dane.txt | uniq

  • uniq usuwa tylko sąsiadujące duplikaty – aby usunąć wszystkie powtarzające się wiersze, dane należy wcześniej posortować.
  • Parametry -f, -s i -w można łączyć, aby precyzyjniej określać porównywany fragment wiersza.
  • Polecenie jest szybkie i wydajne, szczególnie przy dużych zbiorach danych.

Błąd / KomunikatPrzyczynaRozwiązanie
Wynik zawiera nieusunięte duplikatyDuplikaty nie sąsiadują ze sobą.Posortuj dane przed użyciem uniq.
uniq: command not foundBrak programu w systemie.Zainstaluj pakiet coreutils.
Nieoczekiwane różnice wielkości literBrak użycia opcji -i.Dodaj -i dla porównania bez uwzględniania wielkości liter.