Linux команди

Linux uniq команда

Linux uniq команда
Какво е „uniq“? Това е чудесен инструмент за команден ред, който ще отчете или пропусне всеки дублиран текст в дадения вход. Той е част от GNU coreutils и така е достъпен във всяка една UNIX / Linux система там. Нека да започнем с “uniq”!

Използване на Uniq

Ето как изглежда основната структура на командите “uniq”.

uniq

Например, нека проверим съдържанието на „дубликат.текст". Разбира се, той съдържа много дублирано текстово съдържание за целите на тази статия.

котен дубликат.txt | вид

Има ясно дублирано съдържание, нали? Нека ги филтрираме през “uniq”.

котка дубликат | сортиране | uniq

Резултатът изглежда толкова по-добре само с уникалните стойности, нали?

За да свършите работата обаче, просто не е нужно да използвате метода на тръбопроводите. “Uniq” може директно да работи и върху файловете.

uniq

Изтриване на дублирано съдържание

Да, изтриването на дублираното съдържание от входа и запазването само на първата поява е поведението по подразбиране на „uniq“. Имайте предвид, че това дублирано изтриване се случва само когато “uniq” намира едновременно дублиращи се елементи.

Нека проверим този пример. Създадох още един „дубликат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 - всички повторени = добавяне

котен дубликат.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-и 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”.

човек уник

информация uniq

Наслади се!

Полезни инструменти за геймърите на Linux
Ако искате да играете игри на Linux, има вероятност да сте използвали приложения и помощни програми като Wine, Lutris и OBS Studio, за да подобрите иг...
HD Remastered Games за Linux, които никога преди не са имали издание на Linux
Много разработчици и издатели на игри излизат с HD ремастер на стари игри, за да удължат живота на франчайза, моля феновете, които искат съвместимост ...
Как да използвам AutoKey за автоматизиране на Linux игри
AutoKey е програма за автоматизация на настолни компютри за Linux и X11, програмирана в Python 3, GTK и Qt. Използвайки неговата функционалност за скр...