Как сделать

Linux Uniq Command: что это такое и как его использовать

Удаление дубликатов строк с помощью Uniq

Linux (и его предшественник, Unix) были построены на простом тексте. В результате у него есть все виды полезных инструментов обработки текста, которые вы можете использовать из терминала . Утилита Linux uniq была разработана, чтобы помочь вам сортировать текстовые файлы по уникальным значениям. 

Что такое Linux uniq и когда вы его используете?

Команда  uniq  устанавливается из большинства дистрибутивов Linux из коробки и входит в пакет coreutils. Он используется для идентификации и «свертывания» строк смежного идентичного текста. Давайте немного распакуем это определение. 

  • Базовая единица для сравнения — строка текста, т.е. весь текст от одной строки возвращается до следующей. Это может включать несколько предложений, если они находятся в одном абзаце. 
  • По умолчанию uniq сравнивает только соседние строки. Это означает, что если две строки абсолютно одинаковы, но между ними есть разные строки, они будут считаться разными, если вы не примените к команде несколько разных параметров (подробнее об этом позже). 
  • В этом контексте «сворачивание» означает, что тогда uniq отображает свой вывод, он будет включать только первое вхождение строки. 

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

Основное использование Linux Uniq Command

Удаление дубликатов строк с помощью Uniq

На базовом уровне команда Linux uniq выглядит следующим образом:

uniq -o = значение / путь / к / входному файлу 

Здесь «o» выше представляет сокращенный флаг для одного из его параметров. Вы также можете ввести это в более длинной форме, например: 

uniq --option = значение / путь / к / входному файлу 

«Файл ввода» должен быть простым текстовым файлом, содержащим ваши данные. Существует много параметров для команды uniqu в Linux , но может быть неочевидно, как вы можете  использовать  эти параметры, чтобы предоставить вам полезный вывод. Мы углубимся в некоторые из них в следующих разделах.

Удаление смежных дубликатов с помощью команды uniq

В своей основной форме команда uniq «свернет» соседние дубликаты и отобразит результаты. Например, предположим, что вы начинаете новый блог и у вас есть список людей, которые подписались на ваш электронный бюллетень (newsletter.txt), но еще не стали его участниками.

Jsmith@example.com  
Jsmith@example.com 
Tmiller@example.com 
Mjones@example.com 
Mjones@example.com 

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

$ uniq newsletter.txt  
Jsmith@example.com 
Tmiller@example.com 
Mjones@example.com 

По общему признанию, это само по себе не очень интересно. Если в конце файла существует третье вхождение «Jsmith@example.com», оно останется. Поэтому важно изучить некоторые параметры этой команды.

Подсчет количества вхождений с помощью uniq

Подсчет повторяющихся линий с помощью Uniq

Предположим, ваш блог взлетел, и люди не только регистрируются, но и подписываются! Для денег! И почему бы и нет? Список получаемых вами платежей начнет расти.

Смит Джон Jsmith@example.com $ 3,00 
Смит Джон Jsmith@example.com $ 3,00
Смит Джон Jsmith@example.com $ 3,00
Смит Джон Jsmith@example.com $ 3,00
Смит Джон Jsmith@example.com $ 3,00
Смит Джон Jsmith@example.com $ 3,00
Смит Джон Jsmith@example.com $ 3,00
Смит Джон Jsmith@example.com $ 3,00
Питерс Аарон Apeters@example.com $ 10,00
Петерс Аарон Apeters@example.com $ 10,00
Петерс Аарон Apeters@example.com $ 10,00
Миллер Тим Тмиллер@example.com $ 1,00
Миллер Тим Тмиллер @ example.com $ 1,00
Миллер Тим Tmiller@example.com $ 1,00
Миллер Тим Tmiller@example.com $ 1,00
Миллер Тим Tmiller@example.com $ 1,00
Миллер Тим Tmiller@example.com $ 1,00
Джонс Мэри Mjones@example.com $ 5,00
Джонс Мэри Mjones@example.com $ 5,00
Джонс Мэри Mjones@example.com $ 5,00
Джонс Мэри Mjones@example.com $ 5,00
Джонс Фред Fjones@example.com $ 4,00
Джонс Фред Fjones@example.com $ 4,00
Джонс Фред Fjones@example.com $ 4,00
Джонс Фред Fjones@example.com $ 4,00
Джонс Фред Fjones@example.com $ 4,00

В какой-то момент вам захочется подытожить, как долго некоторые из ваших подписчиков были с вами. Учитывая приведенный выше список их платежей на сегодняшний день, вы можете сделать так, чтобы uniq подсчитывал количество вхождений с флагом -c :

$ uniq -c 
     payment.txt 8 Смит Джон Jsmith@example.com $ 3,00
     3 Питерс Аарон Apeters@example.com $ 10,00
     6 Миллер Тим Tmiller@example.com $ 1,00
     4 Джонс Мэри Мджонс@example.com 5,00 $
     5 Джонс Фред Фьонс @ пример. ком $ 4,00

Тем не менее, это опять-таки зависит от соседних строк … если бы были такие, которых не было, в выходных данных программы, которая была бы разработана для дублирования, были бы дубликаты! По этой причине uniq наиболее полезен, когда используется вместе с командой sort .

Отображение уникальных строк с помощью команд sort и uniq

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

Смит Джон Jsmith@example.com $ 3,00 
Джонс Фред Fjones@example.com $ 4,00
Миллер Тим Tmiller@example.com $ 1,00
Питерс Аарон Apeters@example.com $ 10,00
Джонс Мэри Мджонс@example.com $ 5,00
Питерс Аарон Апетерс@example.com $ 10,00
Миллер Тим Tmiller@example.com $ 1,00
Джонс Фред Fjones@example.com $ 4,00
Смит Джон Jsmith@example.com $ 3,00
Джонс Фред Fjones@example.com $ 4,00
Питерс Аарон Apeters@example.com $ 10,00
Джонс Фред Fjones@example.com $ 4,00
Джонс Фред Fjones @ example.com $ 4,00
Миллер Тим Tmiller@example.com $ 1,00
Джонс Мэри Mjones@example.com $ 5,00
Смит Джон Jsmith@example.com $ 3,00
Миллер Тим Tmiller@example.com $ 1,00
Смит Джон Jsmith@example.com $ 3,00
Смит Джон Jsmith@example.com $ 3,00
Смит Джон Jsmith@example.com $ 3,00
Смит Джон Jsmith@example.com $ 3,00
Джонс Мэри Mjones@example.com $ 5,00
Джонс Мэри Mjones@example.com $ 5,00
Миллер Тим Tmiller@example.com $ 1,00
Миллер Тим Tmiller@example.com $ 1,00
Смит Джон Jsmith@example.com $ 3,00

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

Похожие посты
Как сделать

Как получить возмещение за покупки в iTunes или App Store

Как сделать

Поверхностное перо не работает? Вот как это исправить

Как сделать

Как настроить и использовать Fire TV Recast

Как сделать

Как изменить рингтон по умолчанию на вашем iPhone