1. Nauka
  2. /
  3. Kursy
  4. /
  5. Wprowadzenie do powłoki systemowej

Connected

ćwiczenie

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.

Instrukcje

100 XP

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.