Як вилучити дублікати рядків?
Ще одна команда, яку часто використовують із sort, — це uniq,
завдання якої — вилучати повторювані рядки.
Точніше кажучи,
вона прибирає лише суміжні дублікати рядків.
Якщо файл містить:
2017-07-03
2017-07-03
2017-08-03
2017-08-03
то uniq виведе:
2017-07-03
2017-08-03
але якщо він містить:
2017-07-03
2017-08-03
2017-07-03
2017-08-03
тоді uniq надрукує всі чотири рядки.
Причина в тому, що uniq створено для роботи з дуже великими файлами.
Щоб вилучити несуміжні дублікати з файла,
їй довелося б тримати в пам'яті весь файл
(або принаймні
усі унікальні рядки, які вже зустрілися).
Прибираючи лише суміжні дублікати,
вона має зберігати в пам'яті лише останній унікальний рядок.
Ця вправа є частиною курсу
Вступ до Shell
Інструкції до вправи
Напишіть конвеєр, щоб:
- отримати другий стовпець із
seasonal/winter.csv, - прибрати слово "Tooth" з виводу, щоб залишилися лише назви зубів,
- відсортувати вивід так, щоб усі входження певної назви зуба були суміжними; та
- показати кожну назву зуба один раз разом із кількістю її появ.
Початок вашого конвеєра такий самий, як у попередній вправі:
cut -d , -f 2 seasonal/winter.csv | grep -v Tooth
Доповніть його командою sort, а також використайте uniq -c, щоб показати унікальні рядки разом із кількістю появ кожного, замість використання uniq і wc.
Практична інтерактивна вправа
Перетворіть теорію на практику за допомогою однієї з наших інтерактивних вправ
Почати вправу