Команда Linux uniq: Фильтрация дубликатов

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/TextProcessingGroup -.-> linux/sort("Text Sorting") linux/TextProcessingGroup -.-> linux/uniq("Duplicate Filtering") subgraph Lab Skills linux/cat -.-> lab-219199{{"Команда Linux uniq: Фильтрация дубликатов"}} linux/cd -.-> lab-219199{{"Команда Linux uniq: Фильтрация дубликатов"}} linux/sort -.-> lab-219199{{"Команда Linux uniq: Фильтрация дубликатов"}} linux/uniq -.-> lab-219199{{"Команда Linux uniq: Фильтрация дубликатов"}} end

Изучение исходных данных о клиентах

Начнем с изучения наших исходных данных о покупках клиентов. Эти данные представляют собой ежедневные покупки, совершённые клиентами.

Сначала нам нужно перейти в директорию проекта. В Linux для изменения директории используется команда cd. Тильда (~) является сокращением, обозначающим вашу домашнюю директорию.

cd ~/project

Эта команда изменяет текущую рабочую директорию на /home/labex/project. Теперь, когда мы находимся в правильной директории, давайте посмотрим на содержимое файла с данными о клиентах. Мы будем использовать команду cat, что является сокращением от "concatenate" (конкатенация). Она обычно используется для отображения содержимого файлов.

cat customer_purchases.txt

Вы должны увидеть вывод, похожий на следующий:

Alice,Electronics
Bob,Books
Charlie,Clothing
Alice,Electronics
David,Home Goods
Bob,Books
Eve,Toys
Charlie,Clothing
Frank,Sports
Alice,Electronics

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

Сортировка данных

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

Мы будем использовать команду sort для алфавитной сортировки наших данных о клиентах:

sort customer_purchases.txt > sorted_purchases.txt

Разберем эту команду на составляющие:

  • sort - это команда для сортировки строк текста.
  • customer_purchases.txt - это входной файл, который мы сортируем.
  • > - это оператор перенаправления. Он берет вывод команды слева и записывает его в файл справа.
  • sorted_purchases.txt - это новый файл, в котором мы сохраняем отсортированные данные.

Теперь давайте посмотрим на содержимое отсортированного файла:

cat sorted_purchases.txt

Вы должны увидеть вывод, похожий на следующий:

Alice,Electronics
Alice,Electronics
Alice,Electronics
Bob,Books
Bob,Books
Charlie,Clothing
Charlie,Clothing
David,Home Goods
Eve,Toys
Frank,Sports

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

Использование команды uniq для удаления повторяющихся записей

Теперь, когда наши данные отсортированы, мы можем использовать команду uniq для удаления повторяющихся записей. Это даст нам список уникальных покупок клиентов.

Запустите следующую команду:

uniq sorted_purchases.txt unique_purchases.txt

Разберем эту команду на составляющие:

  • uniq - это команда для фильтрации повторяющихся строк в файле.
  • sorted_purchases.txt - это наш входной файл (отсортированные данные).
  • unique_purchases.txt - это выходной файл, в котором мы сохраняем результаты.

Команда uniq считывает отсортированные данные из файла sorted_purchases.txt, удаляет соседние повторяющиеся строки и сохраняет результат в новом файле с именем unique_purchases.txt.

Теперь давайте посмотрим на содержимое нового файла:

cat unique_purchases.txt

Вы должны увидеть вывод, похожий на следующий:

Alice,Electronics
Bob,Books
Charlie,Clothing
David,Home Goods
Eve,Toys
Frank,Sports

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

Подсчет покупок с использованием опции -c в команде uniq

Команда uniq становится еще более мощной, когда мы используем ее опции. Давайте воспользуемся опцией -c для подсчета, сколько раз каждый клиент совершил покупку.

Запустите следующую команду:

uniq -c sorted_purchases.txt purchase_counts.txt

Разберем эту команду на составляющие:

  • uniq - это наша команда для фильтрации повторяющихся строк.
  • -c - это опция, которая сообщает команде uniq добавить в начало каждой строки количество ее вхождений.
  • sorted_purchases.txt - это наш входной файл.
  • purchase_counts.txt - это выходной файл, в котором мы сохраняем результаты.

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

Теперь давайте посмотрим на содержимое этого нового файла:

cat purchase_counts.txt

Вы должны увидеть вывод, похожий на следующий:

   3 Alice,Electronics
   2 Bob,Books
   2 Charlie,Clothing
   1 David,Home Goods
   1 Eve,Toys
   1 Frank,Sports

Число в начале каждой строки показывает, сколько раз этот клиент совершил покупку. Например, Алиса совершила 3 покупки электроники, а Фрэнк - 1 покупку спортивных товаров.

Поиск постоянных клиентов с использованием опции -d в команде uniq

В качестве аналитика данных вы, возможно, заинтересованы в определении постоянных клиентов. Мы можем использовать опцию -d команды uniq для отображения только повторяющихся строк, которые представляют клиентов, совершивших несколько покупок.

Запустите следующую команду:

uniq -d sorted_purchases.txt repeat_customers.txt

Разберем эту команду на составляющие:

  • uniq - это наша команда для фильтрации повторяющихся строк.
  • -d - это опция, которая сообщает команде uniq выводить только повторяющиеся строки.
  • sorted_purchases.txt - это наш входной файл.
  • repeat_customers.txt - это выходной файл, в котором мы сохраняем результаты.

Эта команда определяет повторяющиеся строки в файле sorted_purchases.txt и сохраняет их в файл repeat_customers.txt.

Давайте посмотрим на содержимое этого нового файла:

cat repeat_customers.txt

Вы должны увидеть вывод, похожий на следующий:

Alice,Electronics
Bob,Books
Charlie,Clothing

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

Резюме

В этом практическом занятии (лабораторной работе) мы изучили команду uniq в Linux и ее применение при анализе данных о покупках клиентов. Мы научились:

  1. Подготавливать данные для использования с командой uniq, предварительно отсортировав их.
  2. Использовать команду uniq для удаления повторяющихся записей из отсортированного файла.
  3. Использовать команду uniq -c для подсчета количества вхождений каждой уникальной строки.
  4. Использовать команду uniq -d для определения повторяющихся строк.

Эти навыки ценны для задач анализа данных, они помогают эффективно обрабатывать большие наборы данных и извлекать из них полезную информацию.

Дополнительные опции команды uniq, не рассмотренные в этом практическом занятии, включают:

  • -u: Отображать только уникальные строки (строки, которые встречаются ровно один раз)
  • -i: Игнорировать регистр при сравнении строк
  • -f N: Пропускать первые N полей при сравнении строк
  • -s N: Пропускать первые N символов при сравнении строк

Ресурсы