<Предыдущая | Содержание: | Следующая>
уник
По сравнению sort, уник программа легковесная. уник выполняет, казалось бы, тривиальную задачу. При получении отсортированного файла (или стандартного ввода) он удаляет все повторяющиеся строки и отправляет результаты на стандартный вывод. Часто используется вместе с sort очистить вывод от дубликатов.
Наконечник: В то время как уник это традиционный инструмент Unix, часто используемый с sort, версия GNU sort поддерживает -u опция, которая удаляет дубликаты из отсортированного вывода.
Давайте создадим текстовый файл, чтобы попробовать это:
[я @ linuxbox ~] $ кошка> foo.txt a
bcabc
[я @ linuxbox ~] $ кошка> foo.txt a
bcabc
Не забудьте ввести Ctrl-d для завершения стандартного ввода. Теперь, если мы бежим уник в нашем текстовом файле:
[я @ linuxbox ~] $ уникальный foo.txt
abcabc
[я @ linuxbox ~] $ уникальный foo.txt
abcabc
результаты не отличаются от нашего исходного файла; дубликаты не удалялись. Для
uniq, чтобы выполнить свою работу, сначала необходимо отсортировать входные данные:
[я @ linuxbox ~] $ сортировать foo.txt | уникальный
азбука
[я @ linuxbox ~] $ сортировать foo.txt | уникальный
азбука
Это потому что уник удаляет только повторяющиеся строки, которые соседствуют друг с другом.
uniq имеет несколько вариантов. Вот самые распространенные:
Таблица 20-2: Общие параметры uniq
Вариант Описание
Вариант Описание
-c Вывести список повторяющихся строк с указанием количества повторений этой строки.
-d Выводить только повторяющиеся строки, а не уникальные строки.
-f n Игнор n ведущие поля в каждой строке. Поля разделяются пробелами, как в sort; однако, в отличие от sort, уник не имеет возможности установить альтернативный разделитель полей.
-i Игнорировать регистр при сравнении строк.
-s n Пропустить (игнорировать) ведущий n символы каждой строки.
-u Выводить только уникальные строки. Строки с дубликатами игнорируются.
Здесь мы видим уник используется для сообщения количества дубликатов, найденных в нашем текстовом файле, с помощью -c опции:
[я @ linuxbox ~] $ сортировать foo.txt | uniq -c
2 в
2 б
2 с
[я @ linuxbox ~] $ сортировать foo.txt | uniq -c
2 в
2 б
2 с