Linux Command Line

Эффективный подсчёт уникальных строк в файлах Linux

Spread the love

Подсчет уникальных строк в файле — распространенная задача в Linux. В этой статье представлены два эффективных метода командной строки: использование sort и uniq, а также использование awk.

Содержание

Подсчет уникальных строк с помощью sort и uniq

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

Для подсчета уникальных строк в файле file.txt:


sort file.txt | uniq -c

Это отображает каждую уникальную строку с ее количеством. Чтобы получить общее количество уникальных строк, передайте вывод в wc -l:


sort file.txt | uniq -c | wc -l

Пример:

Если file.txt содержит:


apple
banana
apple
orange
banana
apple

sort file.txt | uniq -c выведет:


      3 apple
      2 banana
      1 orange

А sort file.txt | uniq -c | wc -l выведет:


3

Подсчет уникальных строк с помощью awk

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

Для подсчета уникальных строк и отображения их с количеством:


awk '{count[$0]++} END {for (line in count) print count[line], line}' file.txt

Этот скрипт увеличивает счетчик для каждой строки в массиве count, используя строку в качестве ключа. Блок END итерирует по массиву, выводя количество каждой строки и саму строку.

Чтобы получить только общее количество уникальных строк:


awk '{count[$0]++} END {print length(count)}' file.txt

Это использует length(count) для прямого вывода количества уникальных строк (размера массива).

Пример:

Используя тот же file.txt, первая команда awk дает тот же вывод, что и метод sort | uniq -c. Вторая команда awk выводит 3, указывая на три уникальные строки.

Выберите метод, который наилучшим образом соответствует вашим потребностям. sort и uniq проще для базовых задач; awk обеспечивает большую гибкость для сложных сценариев.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *