Продвинутые параметры команды uniq и практические применения
Теперь, когда вы понимаете базовое использование команды uniq
и способ комбинирования ее с командой sort
, давайте рассмотрим некоторые дополнительные параметры команды uniq
, которые делают ее еще более мощной для задач обработки данных.
Подсчет количества вхождений с помощью параметра -c
Параметр -c
подсчитывает количество вхождений каждой строки. Это полезно, когда вам нужно узнать, сколько раз каждая уникальная строка встречается в файле:
sort ~/project/duel_log.txt | uniq -c
Вы должны увидеть такой вывод:
2 potion
2 shield
2 sword
Это показывает, что каждый элемент встречается дважды в нашем исходном файле.
Поиск только дублирующихся строк с помощью параметра -d
Если вам нужно найти только дублирующиеся строки (строки, которые встречаются более одного раза), вы можете использовать параметр -d
:
sort ~/project/duel_log.txt | uniq -d
Вывод:
potion
shield
sword
Поскольку все элементы в нашем файле имеют дубликаты, все они отображаются в выводе.
Создание файла только с уникальными записями
Создадим новый файл с более разнообразным содержимым, чтобы лучше продемонстрировать команду uniq
:
echo -e "apple\napple\napple\nbanana\ncherry\ncherry\ngrape" > ~/project/fruits.txt
Проверим содержимое этого файла:
cat ~/project/fruits.txt
Вывод:
apple
apple
apple
banana
cherry
cherry
grape
Теперь используем параметр -u
для поиска записей, которые встречаются ровно один раз:
sort ~/project/fruits.txt | uniq -u
Вывод:
banana
grape
Это показывает, что "banana" и "grape" встречаются только один раз в нашем файле.
Практическое применение: анализ логов
Создадим простой файл логов, чтобы имитировать реальное применение:
echo -e "INFO: System started\nERROR: Connection failed\nINFO: User logged in\nWARNING: Low memory\nERROR: Connection failed\nINFO: System started" > ~/project/system.log
Теперь проанализируем этот файл логов, чтобы узнать, какие типы сообщений встречаются и сколько раз:
cat ~/project/system.log | sort | uniq -c
Вывод должен быть похожим на следующий:
2 ERROR: Connection failed
2 INFO: System started
1 INFO: User logged in
1 WARNING: Low memory
Это дает вам быстрый обзор типов событий в файле логов и их частоты.
Вы также можете извлечь только типы сообщений (INFO, ERROR, WARNING) с помощью команды cut
:
cat ~/project/system.log | cut -d: -f1 | sort | uniq -c
Вывод:
2 ERROR
3 INFO
1 WARNING
Этот анализ показывает, что из 6 записей в логе 3 являются сообщениями INFO, 2 - сообщениями ERROR и 1 - сообщением WARNING.
Эти примеры демонстрируют, как комбинирование простых команд, таких как sort
, uniq
и cut
, позволяет создавать мощные конвейеры обработки данных в Linux.