COREUTILS. Команда uniq. Вывод уникального содержимого

07/24/2015

Общий синтаксис программы uniq в linux предельно простой:

   unic [OPTIONS] [INPUT [OUTPUT]]

Тоесть, чтобы вывести уникальные строки, например в тестовом файле my_text_file, нужно команде uniq передать его имя в качестве аргумента

   unic my_text_file

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

   unic /home/user/my_text_file

Неуникальные строки можно посчитать. Для этого передайте quic в качестве опции ключ "-c".

   unic -c /home/user/my_text_file

В выводе вы получите таблицу из 2-х колонок, в первой будет указано количество повторяющихся строк, во второй их значение.

В linux uniq также можно попросить печатать только те строки, которые имеют дубликаты, для этого нужно использовать ключ "-d":

   uniq -d /home/user/my_text_file

Опции можно комбинировать, и чтобы посчитать только строки которые имеют дубликаты, следует ввести такую команду:

   uniq -d -с /home/user/my_text_file

В противовес ключу "-d" есть ключ "-u", заставляющий uniq выводить только строки, не имеющие дубликата:

   uniq -u /home/user/my_text_file

Однако, как мы и освещали в вводой части, uniq работает только последовательно, следовательно строки, содержащиеся в файле, например:

   1

   2

   1

не будут считаться уникальными. Чтобы разрешить эту проблему можно использовать в linux команду uniq совместно с командой sort, перенаправляя вывод одной команды на ввод другой:

   sort -n my_text_file | uniq

или же просто использовать sort с ключом "-u"

  sort  -n -u my_text_file

Возможности и примеры использования утилиты sort мы уже освещали в статье COREUTILS. Команда sort. Сортировка вывода программ

Темы: