Команди Linux

Команда Linux uniq

Команда Linux uniq
Що таке "uniq"? Це чудовий інструмент командного рядка, який повідомляє або пропускає будь-який повторний текст у заданому введенні. Це частина основних модулів GNU і тому доступна у кожній окремій системі UNIX / Linux. Почнемо з “uniq”!

Використання Uniq

Ось як виглядає базова структура команд “uniq”.

uniq

Наприклад, давайте перевіримо вміст “дубліката.txt ". Звичайно, він містить багато дублікатів текстового вмісту для цілей цієї статті.

кішка дублікат.txt | сортувати

Є чітко повторюваний вміст, вірно? Давайте відфільтруємо їх через “uniq”.

кішка дублікат | сортувати | uniq

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

Однак для виконання роботи просто не потрібно використовувати метод трубопроводів. “Uniq” може безпосередньо працювати і над файлами.

uniq

Видалення повторюваного вмісту

Так, видалення повторюваного вмісту з вводу та збереження лише першого входження є поведінкою за замовчуванням “uniq”. Зауважте, що це повторне видалення відбувається лише тоді, коли “uniq” знаходить паралельні повторювані елементи.

Давайте перевіримо цей приклад. Я створив ще один «дублікат1.txt ”, що містить повторювані елементи. Однак вони не суміжні між собою.

дублікат кажана1.txt

Тепер відфільтруйте цей вихід за допомогою “uniq”.

кішка дублікат1.txt | uniq

Весь дублікат вмісту є! Ось чому, якщо ви працюєте з чимось подібним до цього, перекладіть вміст через "сортування", щоб переконатись, що весь вміст відсортовано, а дублікати прилеглі один до одного.

кішка дублікат1.txt | сортувати

Тепер “uniq” буде робити свою роботу нормально.

кішка дублікат1.txt | сортувати | uniq

Кількість повторень

Якщо ви хочете, ви можете перевірити, скільки разів повторюється рядок у вмісті. Просто використовуйте прапор “-c” із “uniq”.

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

Примітка: “uniq” також виконуватиме свою звичайну роботу з видалення дублікатів.

Друк повторюваних рядків

Найчастіше ми хочемо позбутися дублікатів, вірно? Цього разу, як би просто перевірити, що повторюється?

Так, “uniq” також може це зробити. У цьому випадку вам доведеться скористатися опцією “-D”. Я буду використовувати “сортування” між ними, щоб отримати кращий, вишуканіший результат.

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

ОГО! Це БАГАТО дублікатів! Однак усі дублікати об’єднані в групи, що ускладнює навігацію. Як щодо того, щоб додати невеликий проміжок між ними?

uniq - все повторюване =

Тут доступні 3 різні методи: жоден (значення за замовчуванням), попередній та відокремлений.

кішка дублікат.txt | сортувати | uniq - все повторюється = prepend

кішка дублікат.txt | сортувати | uniq - все повторюване = окреме

Тепер це виглядає краще.

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

У багатьох випадках унікальність доводиться перевіряти іншою частиною рядка.

Давайте розберемося в цьому на прикладі. У файлі дублікат1.txt, скажімо, дублювання визначається другою частиною. Як ви кажете “uniq” це робити? Як правило, він перевіряє перше поле (за замовчуванням). Ну, ми теж можемо це зробити. Існує цей прапор «-f», щоб виконувати лише цю роботу.

uniq -f
кішка дублікат1.txt | сортувати -k 2 | uniq -f 1

Якщо вам цікаво із позначкою "сортувати", це означає сказати "сортувати" сортувати за другою колонкою.

Відобразити всі рядки, але окремі дублікати

Згідно з усіма згаданими вище прикладами, “uniq” зберігає лише перше входження дубльованого вмісту та видаляє решту. Як щодо взагалі видалення повторюваного вмісту? Так, використовуючи прапор “-u”, ми можемо змусити “uniq” зберігати лише неповторювані рядки.

кішка дублікат.txt | сортувати

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

Хм, зараз занадто багато дублікатів…

Пропустити початкові символи

Ми обговорили, як сказати “uniq” робити свою роботу в інших сферах, вірно? Настав час розпочати перевірку після кількох початкових символів. Для цього прапор «-s», що супроводжується кількістю символів, буде казати «uniq» виконувати роботу.

кішка дублікат1.txt | сортувати -k 2 | uniq -s 2

Це схоже на приклад, коли “uniq” мав виконувати своє завдання лише у другому полі. Побачимо ще один приклад із цим фокусом.

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

Перевірте ТІЛЬКИ початкові символи

Подібно до того, як ми сказали “uniq” пропустити першу пару символів, також можна сказати “uniq” просто обмежити перевірку в межах першої пари символів. Для цього існує спеціальний прапор “-w”.

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

Ця команда говорить “uniq” виконувати перевірку унікальності протягом перших 5 символів.

Подивимось ще один приклад цієї команди.

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

Він знищує всі інші випадки “дублікатів” записів, оскільки він перевіряв унікальність частини “dupli”.

Нечутливість до регістру

Перевіряючи унікальність, “uniq” також перевіряє регістр символів. У деяких ситуаціях чутливість до регістру не має значення, тому ми можемо використовувати прапор “-i”, щоб зробити регістр “uniq” чутливим.

Тут я представляю вам демонстраційний файл.

Деякі розумні дублювання із сумішшю великих та малих літер, вірно? Пора закликати силу “uniq”, щоб очистити безлад!

кішка дублікат1.txt | сортувати | uniq -i

Бажання виконано!

Вихід із закінченням NULL

За замовчуванням поведінка “uniq” полягає у завершенні виводу новим рядком. Однак висновок також можна припинити за допомогою NULL. Це дуже корисно, якщо ви збираєтеся використовувати його в сценаріях. Тут прапор “-z” - це те, що робить цю роботу.

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

Поєднання кількох прапорів

Ми дізналися ряд прапорів “uniq”, вірно? Як щодо поєднання їх разом?

Наприклад, я поєдную чутливість до регістру та кількість повторень разом.

Якщо ви коли-небудь плануєте змішувати кілька прапорців, спочатку переконайтеся, що вони працюють правильно. Іноді все просто не працює як слід.

Заключні думки

“Uniq” - це досить унікальний інструмент, який пропонує Linux. Маючи настільки потужні функції, він може бути корисним у безлічі способів. Щоб отримати перелік усіх прапорів та їх пояснення, зверніться до керівника та інформаційних сторінок “uniq”.

man uniq

info uniq

Насолоджуйтесь!

HD Remastered Games для Linux, які раніше ніколи не випускали Linux
Багато розробників і видавців ігор випускають HD-ремастер старих ігор, щоб продовжити життя франшизи. Будь ласка, шанувальники просять сумісність із с...
Як використовувати AutoKey для автоматизації ігор Linux
AutoKey - це утиліта автоматизації робочого столу для Linux та X11, запрограмована на Python 3, GTK та Qt. Використовуючи його сценарії та функціональ...
How to Show FPS Counter in Linux Games
Linux gaming got a major push when Valve announced Linux support for Steam client and their games in 2012. Since then, many AAA and indie games have m...