Jak usunąć zduplikowane wiersze?
Kolejnym poleceniem często używanym razem z sort jest uniq,
którego zadaniem jest usuwanie zduplikowanych wierszy.
Dokładniej rzecz ujmując,
usuwa ono sąsiadujące zduplikowane wiersze.
Jeśli plik zawiera:
2017-07-03
2017-07-03
2017-08-03
2017-08-03
to uniq zwróci:
2017-07-03
2017-08-03
ale jeśli zawiera:
2017-07-03
2017-08-03
2017-07-03
2017-08-03
to uniq wypisze wszystkie cztery wiersze.
Dzieje się tak, ponieważ uniq zostało zaprojektowane do pracy z bardzo dużymi plikami.
Aby usunąć niesąsiadujące duplikaty,
polecenie musiałoby przechowywać cały plik w pamięci
(albo przynajmniej wszystkie napotkane dotąd unikalne wiersze).
Usuwając tylko sąsiadujące duplikaty,
wystarczy mu trzymać w pamięci jedynie ostatnio napotkany unikalny wiersz.
To ćwiczenie jest częścią kursu
Wprowadzenie do powłoki systemowej
Instrukcje do ćwiczenia
Zbuduj potok, który:
- pobierze drugą kolumnę z pliku
seasonal/winter.csv, - usunie słowo „Tooth" z wyników, tak aby wyświetlały się tylko nazwy zębów,
- posortuje wyniki, aby wszystkie wystąpienia danej nazwy zęba znalazły się obok siebie,
- wyświetli każdą nazwę zęba dokładnie raz wraz z liczbą jej wystąpień.
Początek potoku jest taki sam jak w poprzednim ćwiczeniu:
cut -d , -f 2 seasonal/winter.csv | grep -v Tooth
Rozbuduj go o polecenie sort, a następnie użyj uniq -c, aby wyświetlić unikalne wiersze wraz z liczbą ich wystąpień – zamiast korzystać osobno z uniq i wc.
Interaktywne ćwiczenie praktyczne
Przekształć teorię w praktykę dzięki jednemu z naszych interaktywnych ćwiczeń
Rozpocznij ćwiczenie