Команда uniq для удаление дублей строк в Linux

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

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

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

В этом простом руководстве мы подробно рассмотрим команду uniq с практическими примерами в Linux.

Синтаксис команды uniq

Он очень прост для понимания и похож на синтаксис других команд Linux:

uniq [OPTIONS] [INPUT] [OUTPUT]

Важно отметить, что все опции и параметры команды uniq являются необязательными.

Создание текстового файла-образца

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

vi linux-distributions.txt
cat linux-distributions.txt

Теперь давайте используем этот файл для понимания использования команды uniq.

1. Удаление дубликатов строк из текстового файла.

Одним из распространенных вариантов использования команды uniq является удаление соседних дубликатов строк из текстового файла.

uniq linux-distributions.txt

В приведенном выше выводе видно, что команда uniq успешно удалила дубликаты строк.

2. Подсчет дубликатов строк в текстовом файле

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

Мы можем достичь этого, используя опцию -c, как показано в следующем примере:

uniq -c linux-distributions.txt

В приведенном выше выводе, первый столбец представляет количество повторений строки.

3. Удаление дубликатов с учетом регистра

По умолчанию команда uniq работает с учетом регистра. Однако мы можем отключить это поведение по умолчанию, используя опцию -i, как показано на рисунке.

uniq -i linux-distributions.txt

На этом примере мы видим, что теперь строки Ubuntu и UBUNTU воспринимаются одинаково. То же самое происходит и со строками CentOS и CENTOS.

4. Печатать только дубликаты строк из файла

Иногда мы хотим вывести только дубликаты строк из текстового файла, в этом случае можно использовать опцию -d, как показано на рисунке.

uniq -d linux-distributions.txt

В приведенном выше выводе видно, что команда uniq показывает дубликаты записей из каждой группы.

5. Печать всех дубликатов строк из файла

В предыдущем примере мы видели, как вывести на экран дубликат строки из каждой группы. Аналогичным образом мы можем вывести все дубликаты строк, используя опцию -D:

uniq -D linux-distributions.txt

Вышеприведенный вывод не показывает текст UBUNTU, CENTOS и Alpine, так как это однотипные строки.

6. Показать дубликаты строк с помощью групп в новой строке.

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

Для этого воспользуемся опцией --all-repeated=separate:

uniq --all-repeated=separate linux-distributions.txt

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

7. Печать только уникальных строк из файла

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

Ну, давайте воспользуемся опцией -u для печати только уникальных строк:

uniq -u linux-distributions.txt

Здесь мы видим, что команда uniq выводит строки, которые не дублируются.

8. Удаление не смежных дубликатов строк в файле

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

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

sort linux-distributions.txt | uniq

В этом примере мы использовали команды sort и uniq без каких-либо опций. Однако, мы также можем комбинировать другие поддерживаемые опции с этими командами.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен www.tecmint.com

Похожие статьи

Комментарии (0)