1. Обучение
  2. /
  3. Курса
  4. /
  5. Введение в Shell

Connected

упражнение

Как удалить повторяющиеся строки?

Ещё одна команда, которую часто используют вместе с 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 рассчитана на работу с очень большими файлами. Чтобы удалять несоседние дубликаты, команде пришлось бы хранить весь файл в памяти (или как минимум все уникальные строки, встреченные до этого момента). Удаляя только соседние дубликаты, uniq держит в памяти лишь последнюю уникальную строку.

Инструкции

100 XP

Составьте конвейер, который выполняет следующие действия:

  • извлекает второй столбец из файла seasonal/winter.csv,
  • удаляет слово "Tooth" из вывода, чтобы остались только названия зубов,
  • сортирует результат так, чтобы все вхождения одного названия оказались рядом,
  • выводит каждое название зуба один раз вместе с количеством его вхождений.

Начало конвейера совпадает с предыдущим упражнением:

cut -d , -f 2 seasonal/winter.csv | grep -v Tooth

Дополните его командой sort, а затем используйте uniq -c, чтобы вывести уникальные строки с подсчётом количества вхождений — вместо комбинации uniq и wc.