[#] Unikalna lista

( Ostatnio zmieniony pt., 13/06/2008 - 13:12 )
 

UNIQ

Jeśli posiadamy plik, w którym zawarte wiersze mogą się dublować, a chcielibyśmy wyeliminować zbędne powtórzenia, uniq – pomoże nam tego dokonać. Wstępnie sortując wiersze w pliku (wymóg uniq), zapiszemy je bez powtórzeń, tak, aby żaden się nie powtarzał w pliku „wiersze_bez_pow­torzen.txt“

sort plik.txt | uniq  > wiersze_bez_powtorzen.txt

Przykłady użycia:

1. Wyświetl ile razy dany wiersz się powtórzył i tylko te które się powtórzyły

sort plik.txt | uniq -c -d

2. Wypisz wszystkie linie z pliku plik.txt, posortowane według liczby powtórzeń

sort plik.txt | uniq -c | sort -n

3. Wypisz powtarzające się linie z pliku plik.txt bez rozróżniania wielkości znaków

sort plik.txt | uniq -d -i

uniq wypisuje unikatowe linie sortowanego pliku, tj. odrzucając z kolejnych identycznych wszystkie linie poza jedną. Może on opcjonalnie pokazywać tylko linie, które pojawiają się tylko raz, bądź linie które pojawiają się więcej niż raz. uniq wymaga posortowanego wejścia, ponieważ porównuje tylko linie sąsiadujące ze sobą. Jeśli nie jest posortowane, można zamiast uniq użyć sort -u.

Jeśli plik wynikowy nie jest podany, uniq pisze na standardowe wyjście. Jeśli plik wejściowy nie jest podany, czyta on ze standardowego wejścia.

Wybrane opcje z manuala (man uniq)

OPCJE
   +liczba, -s, --skip-chars=liczba
          W tej opcji, liczba to liczba  całkowita  reprezentująca  liczbę  znaków,  które  należy  przeskoczyć  zanim  rozpocznie  się
          sprawdzanie  unikatowości.   Pierwsze  liczba  znaków,  a  także  jakiekolwiek znaki puste znalezione zanim osiągnięto liczba
          znaków, są przeskakiwane i niewliczane.  Jeśli użyto zarówno przeskakiwania pól jak i znaków, pola są przeskakiwane  w  pier-
          wszej kolejności.

   -liczba, -f, --skip-fields=liczba
          W  tej opcji, liczba to liczba całkowita reprezentująca liczbę pól, które należy przeskoczyć zanim rozpocznie się sprawdzanie
          unikatowości.  Pierwsze liczba pól, a także jakiekolwiek znaki puste znalezione zanim osiągnięto liczba pól, są przeskakiwane
          i  niewliczane.   Pola definiowane są jako łańcuchy znaków nie będących spacjami ani tabulacjami, rozdzielone od siebie spac-
          jami lub tabulacjami.

   -c, --count
          Wypisuje razem z linią ile razy się ona powtórzyła.

   -d, --repeated
          Wypisuje tylko linie powtarzające się.

   -D, --all-repeated
          Wypisuje wszystkie linie powtarzające się i tylko linie powtarzające się.  Opcja ta przydatna jest  głównie  w  połączeniu  z
          innymi np. do ignorowania wielkości liter lub porównywania tylko wybranych pól. Jest to rozszerzenie GNU.

   -i, --ignore-case
          Podczas porównywania linii ignoruje różnice pomiędzy małymi a dużymi literami.

   -u, --unique
          Wypisuje tylko linie unikatowe.

   -w, --check-chars=liczba
          Określa  ilość  znaków,  które  należy  porównywać w liniach, po przeskoczeniu wszystkich wskazanych pól i znaków.  Normalnie
          porównywana jest cała reszta linii.

   --help Wyświetla informację o stosowaniu programu i dostępnych opcjach, kończy pracę.

   --version
          Wyświetla numer wersji programu i kończy pracę.

Przykład użycia „sort“

Sortowanie numeryczne według drugiego pola i rozstrzyganie przeszkód przez sortowanie alfabetyczne wg trzeciego i czwartego znaku piątego pola. Znakiem ograniczającym pola jest znak: :

sort -t : -k 2,2n -k 5.3,5.4

Więcej w „man sort“

5
Twoja ocena: Brak Średnio: 5 (1 vote)