19. Сортировка, объединение и фильтрация sort, uniq, diff, comm
Эффективная работа с текстовыми данными в Linux требует умения сортировать, фильтровать и сравнивать содержимое файлов. Команды sort, uniq, diff и comm обеспечивают мощные инструменты для выполнения этих задач.
В этой лекции мы подробно разберем:
- Сортировку данных с помощью
sort. - Удаление дубликатов с использованием
uniq. - Сравнение файлов с помощью
diff. - Анализ общих и различающихся строк в файлах с помощью
comm.
Команда sort
Описание:
sort используется для сортировки строк в файле или выводе данных. Она поддерживает сортировку по алфавиту, числам, времени и другим критериям.
Синтаксис:
sort [опции] [файл]
Основные опции:
n— сортировка по числовым значениям.r— обратный порядок сортировки.k— сортировка по определенному столбцу.u— исключение повторяющихся строк (аналогuniq).o— запись результата в файл.
Примеры использования:
-
Сортировка строк в файле:
bash sort файл.txt -
Числовая сортировка:
bash sort -n числа.txt -
Обратная сортировка:
bash sort -r файл.txt -
Сортировка по второму столбцу:
bash sort -k 2 файл.txt -
Сохранение результата в файл:
bash sort файл.txt -o отсортированный.txt
Команда uniq
Описание:
uniq удаляет повторяющиеся строки из отсортированного файла или потока данных. Для работы с ней файл должен быть предварительно отсортирован.
Синтаксис:
uniq [опции] [входной_файл] [выходной_файл]
Основные опции:
c— подсчитать количество повторов.d— вывести только повторяющиеся строки.u— вывести только уникальные строки.
Примеры использования:
-
Удаление дубликатов:
bash sort файл.txt | uniq -
Подсчет числа повторов каждой строки:
bash sort файл.txt | uniq -c -
Вывод только дубликатов:
bash sort файл.txt | uniq -d
Команда diff
Описание:
diff сравнивает два файла построчно и показывает их различия. Полезна для анализа изменений в текстовых данных.
Синтаксис:
diff [опции] файл1 файл2
Основные опции:
y— вывести файлы в виде двух колонок.-suppress-common-lines— скрыть одинаковые строки в режиме двух колонок.q— только сообщить о наличии различий.c— контекстный режим, показывающий несколько строк вокруг различий.
Примеры использования:
-
Сравнение двух файлов:
bash diff файл1.txt файл2.txt -
Вывод различий в виде колонок:
bash diff -y файл1.txt файл2.txt -
Показывать только различия:
bash diff -y --suppress-common-lines файл1.txt файл2.txt
Пример результата:
< строка в первом файле
> строка во втором файле
Команда comm
Описание:
comm используется для сравнения двух отсортированных файлов и вывода строк, которые уникальны для каждого из файлов или встречаются в обоих.
Синтаксис:
comm [опции] файл1 файл2
Основные опции:
1— исключить строки, уникальные для первого файла.2— исключить строки, уникальные для второго файла.3— исключить строки, общие для обоих файлов.
Примеры использования:
-
Сравнение двух отсортированных файлов:
bash comm файл1.txt файл2.txt -
Вывод только общих строк:
bash comm -12 файл1.txt файл2.txt -
Вывод строк, уникальных для первого файла:
bash comm -23 файл1.txt файл2.txt
Пример результата:
строка только из файла1
строка только из файла2
общая строка
Практические задания
-
Сортировка строк:
Создайте текстовый файл с именами и отсортируйте его в обратном порядке.
-
Удаление дубликатов:
Удалите повторяющиеся строки из файла с помощью
sortиuniq. -
Анализ различий:
Сравните два текстовых файла с помощью
diffи найдите, какие строки были добавлены или удалены. -
Общие строки:
Найдите строки, которые присутствуют в обоих файлах, используя
comm.
Сравнение команд
| Функция | sort |
uniq |
diff |
comm |
|---|---|---|---|---|
| Сортировка строк | Да | Нет | Нет | Нет |
| Удаление дубликатов | Нет | Да | Нет | Нет |
| Сравнение файлов | Нет | Нет | Да | Да |
| Анализ уникальных строк | Нет | Нет | Нет | Да |
Заключение
Команды sort, uniq, diff и comm — мощные инструменты для работы с текстовыми данными. Они широко применяются в администрировании, программировании и анализе данных. Освоение этих команд позволит эффективно сортировать, фильтровать и сравнивать файлы, а также автоматизировать задачи с текстовыми данными.