Поиск по сайту:

Учебное пособие по командам Uniq с примерами для начинающих

Если вы работаете в основном с командной строкой и каждый день имеете дело с большим количеством текстовых файлов, вам следует знать о команде Uniq.

Что такое Uniq-команда?

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

Обратите внимание, что команда «uniq» не обнаружит повторяющиеся строки, если они не являются соседними. Поэтому вам может потребоваться сначала отсортировать их или объединить команду сортировки с uniq, чтобы получить результаты. Позвольте мне показать вам несколько примеров.

Поскольку команда uniq является частью пакета GNU coreutils, она предустановлена в большинстве дистрибутивов Linux. Итак, давайте не будем заморачиваться с установкой и посмотрим несколько практических примеров команд Uniq.

Примеры команд Uniq

Сначала давайте создадим файл с несколькими повторяющимися строками.

vi ostechnix.txt
welcome to ostechnix
welcome to ostechnix
Linus is the creator of Linux.
Linux is secure by default
Linus is the creator of Linux.
Top 500 super computers are powered by Linux

Как вы видите в приведенном выше файле, у нас мало повторяющихся строк (первая, вторая, третья и пятая строки являются дубликатами).

1. Удалите последовательные повторяющиеся строки в файле с помощью команды Uniq.

Если вы используете команду «uniq» без каких-либо аргументов, она удалит все последовательные повторяющиеся строки и отобразит только уникальные строки.

uniq ostechnix.txt

Пример вывода:

Удалите последовательные повторяющиеся строки в файле с помощью команды Uniq

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

2. Удалите все повторяющиеся строки.

sort ostechnix.txt | uniq

Пример вывода:

Удалить все повторяющиеся строки

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

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

3. Отображать только уникальные строки из файла

Чтобы отобразить только уникальные строки из файла, команда будет такой:

sort ostechnix.txt | uniq -u

Пример вывода:

Linux is secure by default
Top 500 super computers are powered by Linux

Как видите, в данном файле есть только две уникальные строки.

4. Отображать только повторяющиеся строки

Аналогичным образом мы также можем отображать повторяющиеся строки из файла, как показано ниже.

sort ostechnix.txt | uniq -d

Пример вывода:

Linus is the creator of Linux.
welcome to ostechnix

Эти две — повторяющиеся/дублированные строки в файле ostechnix.txt. Обратите внимание, что -d (строчная d) будет печатать только повторяющиеся строки, по одной для каждой группы. Чтобы напечатать все повторяющиеся строки, используйте -D (заглавные буквы d), как показано ниже.

sort ostechnix.txt | uniq -D

Посмотрите разницу между обоими флагами на скриншоте ниже.

Отображать только повторяющиеся строки

5. Отображение количества вхождений каждой строки в файле

По какой-то причине вам может потребоваться проверить, сколько раз повторяется строка в данном файле. Для этого используйте флаг -c, как показано ниже.

sort ostechnix.txt | uniq -c

Пример вывода:

 2 Linus is the creator of Linux.
 1 Linux is secure by default
 1 Top 500 super computers are powered by Linux
 2 welcome to ostechnix

Мы также можем отображать количество вхождений каждой строки вместе с этой строкой, отсортированное по наиболее частому использованию команды:

sort ostechnix.txt | uniq -c | sort -nr

Пример вывода:

 2 welcome to ostechnix
 2 Linus is the creator of Linux.
 1 Top 500 super computers are powered by Linux
 1 Linux is secure by default

6. Ограничьте сравнение N-символами.

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

uniq -d -w 4 ostechnix.txt

7. Избегайте сравнения с первыми символами «N».

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

Следующая команда позволит избежать сравнения с первыми 4 символами строк файла:

uniq -d -s 4 ostechnix.txt

Чтобы избежать сравнения первых N полей вместо символов, используйте флаг «-f» в приведенной выше команде.

Для получения более подробной информации обратитесь к разделу помощи;

uniq --help

и справочные страницы.

man uniq

Также читайте:

  • Учебное пособие по команде Fold с примерами для начинающих

Статьи по данной тематике