Команды Linux

Команда Linux uniq

Команда Linux uniq
Что такое «uniq»? Это отличный инструмент командной строки, который сообщит или пропустит любой повторяющийся текст в заданном вводе. Это часть GNU coreutils и поэтому доступна в каждой отдельной системе UNIX / Linux. Начнем с «uniq»!

Использование Uniq

Вот как выглядит базовая структура команд «uniq».

уникальный

Например, давайте проверим содержание «duplicate.текст". Конечно, он содержит много повторяющегося текстового контента для целей этой статьи.

кошка дубликат.txt | Сортировать

Здесь явно дублированное содержимое, верно? Отфильтруем их через «uniq».

дубликат кошки | сортировать | уникальный

Результат выглядит лучше только с уникальными значениями, верно?

Однако вам просто не нужно использовать метод трубопровода для выполнения работы. «Uniq» также может напрямую работать с файлами.

уникальный

Удаление дублированного контента

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

Давайте посмотрим на этот пример. Я создал еще один «duplicate1.txt », который содержит повторяющиеся элементы. Однако они не соседствуют друг с другом.

летучая мышь duplicate1.текст

Теперь отфильтруйте этот вывод с помощью «uniq».

кошка duplicate1.txt | уникальный

Все дублированное содержимое есть! Вот почему, если вы работаете с чем-то похожим на это, пропустите контент через «сортировку», чтобы убедиться, что все содержимое отсортировано, а дубликаты расположены рядом друг с другом.

кошка duplicate1.txt | Сортировать

Теперь «uniq» будет делать свою работу нормально.

кошка duplicate1.txt | сортировать | уникальный

Количество повторов

При желании вы можете проверить, сколько раз строка повторяется в контенте. Просто используйте флаг «-c» с «uniq».

кошка дубликат.txt | сортировать | uniq -c

Примечание: «uniq» также будет выполнять свою обычную работу по удалению дубликатов.

Печать повторяющихся строк

В большинстве случаев мы хотим избавиться от дубликатов, верно? На этот раз, как насчет того, чтобы просто проверить, что дублируется?

Да, «uniq» тоже умеет. В этом случае вы должны использовать опцию «-D». Я буду использовать «сортировку» между ними, чтобы получить лучший и точный результат.

кошка дубликат.txt | сортировать | uniq -D

УХ ТЫ! Это МНОГО дубликатов! Однако все дубликаты сгруппированы вместе, что затрудняет навигацию по. Как насчет того, чтобы добавить небольшой промежуток между ними?

uniq - все-повторяется =

Здесь доступны 3 разных метода: none (значение по умолчанию), prepend и sep.

кошка дубликат.txt | сортировать | uniq --all-repeat = добавить

кошка дубликат.txt | сортировать | uniq --all-repeat = отдельный

Теперь это выглядит лучше.

Пропуск проверки уникальности

Во многих случаях уникальность должна проверяться другой частью строки.

Давайте разберемся в этом на примере. В файле duplicate1.txt, допустим, дублирование определяется второй частью. Как вы скажете "uniq" сделать это? Как правило, он проверяет первое поле (по умолчанию). Что ж, мы тоже можем это сделать. Есть этот флаг «-f», чтобы выполнить свою работу.

uniq -f
кошка duplicate1.txt | sort -k 2 | uniq -f 1

Если вас интересует флаг «сортировка», он указывает «сортировать» на сортировку на основе второго столбца.

Отображать все строки, кроме отдельных дубликатов

Согласно всем примерам, упомянутым выше, «uniq» сохраняет только первое вхождение дублированного контента и удаляет остальное. Как насчет полного удаления дублированного содержимого? Да, используя флаг «-u», мы можем заставить «uniq» сохранять только неповторяющиеся строки.

кошка дубликат.txt | Сортировать

кошка дубликат.txt | сортировать | uniq -u

Хм, слишком много дубликатов исчезло ..

Пропустить начальные символы

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

кошка duplicate1.txt | sort -k 2 | uniq -s 2

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

кошка дубликат.txt | сортировать | uniq -s 5

Проверяйте ТОЛЬКО начальные символы

Так же, как мы сказали «uniq» пропустить первую пару символов, также можно указать «uniq», чтобы просто ограничить проверку в пределах первой пары символов. Для этой цели есть специальный флаг «-w».

кошка дубликат.txt | сортировать | uniq -w 5

Эта команда сообщает "uniq" выполнить проверку уникальности в пределах первых 5 символов.

Давайте посмотрим еще один пример этой команды.

кошка duplicate1.txt | сортировать | uniq -w 5

Он стирает все другие экземпляры «повторяющихся» записей, потому что выполнял проверку уникальности в части «dupli».

Нечувствительность к регистру

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

Здесь я представляю вам демонстрационный файл.

Какое-то действительно умное дублирование со смесью прописных и строчных букв, справа? Пришло время призвать силы «uniq», чтобы очистить беспорядок!

кошка duplicate1.txt | сортировать | uniq -i

Желание исполнено!

Вывод с завершающим нулем

По умолчанию uniq завершает вывод новой строкой. Однако вывод также может быть завершен NULL. Это очень полезно, если вы собираетесь использовать его в сценариях. Здесь флаг «-z» указывает на то, что делает работу.

кошка дубликат.txt | сортировать | uniq -z

Объединение нескольких флагов

Мы выучили ряд флагов «uniq», верно? Как насчет того, чтобы объединить их вместе?

Например, я объединяю нечувствительность к регистру и количество повторений вместе.

Если вы когда-нибудь планируете смешивать несколько флагов вместе, сначала убедитесь, что они правильно работают вместе. Иногда все работает не так, как должно.

Последние мысли

«Uniq» - довольно уникальный инструмент, который предлагает Linux. Благодаря такому количеству мощных функций он может быть полезен множеством способов. Список всех флагов и их объяснения можно найти на страницах man и info на «uniq».

человек uniq

информация uniq

Наслаждаться!

Vulkan для пользователей Linux
С каждым новым поколением видеокарт мы видим, как разработчики игр расширяют границы графической точности и приближаются на шаг ближе к фотореализму. ...
OpenTTD против Simutrans
Создание собственного транспортного симулятора может быть увлекательным, расслабляющим и чрезвычайно увлекательным занятием. Вот почему вам нужно попр...
Учебник OpenTTD
OpenTTD - одна из самых популярных бизнес-симуляторов. В этой игре вам нужно создать замечательный транспортный бизнес. Тем не менее, вы начнете в нач...