14. uniq (Уникальные)

Команда uniq (уникальный) — это важный инструмент для обработки текста в Linux. Она помогает фильтровать и управлять повторяющимися строками в текстовом файле, но для эффективного использования важно понимать, как она работает.

Базовое удаление дубликатов

Основная функция команды uniq — удаление повторяющихся соседних строк. Представьте, что у вас есть файл с именем reading.txt со следующим содержимым:

book
book
paper
paper
article
article
magazine

Чтобы удалить повторяющиеся строки, вы можете выполнить команду uniq:

$ uniq reading.txt
book
paper
article
magazine

Как видите, uniq выводит версию файла с удаленными повторяющимися соседними строками.

Расширенные опции фильтрации

Команда uniq также предоставляет несколько опций для более детального анализа.

Чтобы подсчитать количество вхождений каждой строки, используйте флаг -c (count):

$ uniq -c reading.txt
      2 book
      2 paper
      2 article
      1 magazine

Чтобы отобразить только те строки, которые не повторяются (т.е. уникальны), используйте флаг -u (unique):

$ uniq -u reading.txt
magazine

И наоборот, чтобы отобразить только те строки, которые повторяются, используйте флаг -d (duplicated):

$ uniq -d reading.txt
book
paper
article

Важность сортировки

Критически важная деталь команды uniq linux заключается в том, что она обнаруживает дублирующиеся строки, только если они находятся непосредственно рядом друг с другом. Если дубликаты разбросаны по файлу, uniq их не идентифицирует.

Рассмотрим эту версию reading.txt, где дубликаты не являются соседними:

book
paper
book
paper
article
magazine
article

Выполнение uniq на этом файле даст неожиданный результат:

$ uniq reading.txt
book
paper
book
paper
article
magazine
article

Ни одна строка не была удалена, потому что никакие две одинаковые строки не стояли рядом. Чтобы решить эту проблему, вы должны сначала отсортировать содержимое файла. Передавая вывод sort в uniq, вы гарантируете, что все одинаковые строки станут соседними, что позволит uniq работать правильно. Эта комбинация является мощным и распространенным шаблоном в сценариях оболочки.

$ sort reading.txt | uniq
article
book
magazine
paper

Эта команда сначала сортирует строки в алфавитном порядке, а затем uniq отфильтровывает дубликаты, предоставляя вам чистый список уникальных записей.

Войдите, чтобы сохранить ваш прогресс обучения

Вход

Упражнения

Практика ведет к совершенству! Вот несколько практических лабораторных работ для закрепления понимания обработки текста с помощью uniq и sort:

  1. Команда Linux uniq: Фильтрация дубликатов - Узнайте, как использовать команду Linux uniq в сочетании с sort для выявления, фильтрации и анализа повторяющихся строк в текстовых файлах.
  2. Команда Linux sort: Сортировка текста - Попрактикуйтесь в использовании команды sort для упорядочивания строк текстовых файлов, что является важным шагом перед эффективным использованием uniq.
  3. Подсчет слов и сортировка - Изучите основные инструменты Linux для обработки текста: wc (подсчет слов) и sort в этой практической задаче. Научитесь подсчитывать строки, слова и символы, находить часто встречающиеся шаблоны и эффективно сортировать данные для различных задач текстового анализа.

Эти лабораторные работы помогут вам применить концепции в реальных сценариях и повысить уверенность в работе с обработкой текста и манипулированием данными в Linux.

Тест

Какую команду вы бы использовали для удаления соседних повторяющихся строк в файле? Пожалуйста, ответьте, используя только имя команды строчными английскими буквами.