Как удалить повторяющиеся строки?
Ещё одна команда, которую часто используют вместе с 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 держит в памяти лишь последнюю уникальную строку.
Это упражнение является частью курса
Введение в Shell
Инструкции к упражнению
Составьте конвейер, который выполняет следующие действия:
- извлекает второй столбец из файла
seasonal/winter.csv, - удаляет слово "Tooth" из вывода, чтобы остались только названия зубов,
- сортирует результат так, чтобы все вхождения одного названия оказались рядом,
- выводит каждое название зуба один раз вместе с количеством его вхождений.
Начало конвейера совпадает с предыдущим упражнением:
cut -d , -f 2 seasonal/winter.csv | grep -v Tooth
Дополните его командой sort, а затем используйте uniq -c, чтобы вывести уникальные строки с подсчётом количества вхождений — вместо комбинации uniq и wc.
Практическое интерактивное упражнение
Превратите теорию в практику с помощью одного из наших интерактивных упражнений
Начать упражнение