Как да намерите дублирани данни в текстов файл на Linux с uniq

Как да намерите дублирани данни в текстов файл на Linux с uniq

Случвало ли ви се е да попаднете на текстови файлове с повтарящи се редове и дублирани думи? Може би редовно работите с изход на команди и искате да ги филтрирате за отделни низове. Що се отнася до текстови файлове и премахване на излишни данни в Linux, командата uniq е най -добрият ви залог.





В тази статия ще обсъдим подробно командата uniq, заедно с подробно ръководство за това как да използвате командата за премахване на дублиращи се редове от текстов файл.





Какво представлява командата uniq?

Командата uniq в Linux се използва за показване на идентични редове в текстов файл. Тази команда може да бъде полезна, ако искате да премахнете дублиращи се думи или низове от текстов файл. Тъй като командата uniq съвпада със съседни редове за намиране на излишни копия, тя работи само със сортирани текстови файлове.





За щастие можете да тръбите вид команда с uniq за организиране на текстовия файл по начин, който е съвместим с командата. Освен да показва повтарящи се редове, командата uniq може да отчита и появата на дублиращи се редове в текстов файл.

Как да използвате командата uniq

Има различни опции и флагове, които можете да използвате с uniq. Някои от тях са основни и изпълняват прости операции като отпечатване на повтарящи се редове, докато други са за напреднали потребители, които често работят с текстови файлове в Linux.



Основен синтаксис

Основният синтаксис на командата uniq е:

uniq option input output

...където опция е флагът, използван за извикване на специфични методи на командата, вход е текстовият файл за обработка и изход е пътят към файла, който ще съхранява изхода.





The изход аргументът не е задължителен и може да бъде пропуснат. Ако потребител не посочи входния файл, uniq приема данни от стандартния изход като вход. Това позволява на потребителя да използва uniq с други команди на Linux .

Примерен текстов файл

Ще използваме текстовия файл duplicate.txt като вход за командата.





127.0.0.1 TCP
127.0.0.1 UDP
Do catch this
DO CATCH THIS
Don't match this
Don't catch this
This is a text file.
This is a text file.
THIS IS A TEXT FILE.
Unique lines are really rare.

Имайте предвид, че вече сме сортирали този текстов файл с помощта на вид команда. Ако работите с друг текстов файл, можете да го сортирате, като използвате следната команда:

sort filename.txt > sorted.txt

Премахнете дублиращите се линии

Най -основното използване на uniq е да се премахнат повтарящите се низове от входа и да се отпечата уникален изход.

uniq duplicate.txt

Изход:

Забележете, че системата не показва второто появяване на реда Това е текстов файл . Също така, гореспоменатата команда отпечатва само уникалните редове във файла и не засяга съдържанието на оригиналния текстов файл.

Пребройте повтарящите се редове

За да изведете броя на повтарящите се редове в текстов файл, използвайте -° С флаг с командата по подразбиране.

uniq -c duplicate.txt

Изход:

Системата показва броя на всеки ред, който съществува в текстовия файл. Можете да видите, че линията Това е текстов файл се среща два пъти във файла. По подразбиране командата uniq е чувствителна към регистъра.

За да отпечатате само дублирани редове от текстовия файл, използвайте флаг. The означава Дубликат .

uniq -D duplicate.txt

Системата ще покаже изхода, както следва.

This is a text file.
This is a text file.

Пропуснете полетата, докато проверявате за дубликати

Ако искате да пропуснете определен брой полета, докато съответствате на низовете, можете да използвате -f флаг с командата. The -f означава Поле .

Помислете за следния текстов файл fields.txt .

192.168.0.1 TCP
127.0.0.1 TCP
354.231.1.1 TCP
Linux FS
Windows FS
macOS FS

За да пропуснете първото поле:

uniq -f 1 fields.txt

Изход:

192.168.0.1 TCP
Linux FS

Гореспоменатата команда пропусна първото поле (IP адресите и имената на ОС) и съвпадна с втората дума (TCP и FS). След това той показва първото появяване на всяко съвпадение като изход.

Игнорирайте знаците при сравняване

Подобно на пропускането на полета, можете да пропуснете и знаци. The flag ви позволява да укажете броя на знаците, които да пропуснете, докато съвпадат дублиращите се редове. Тази функция помага, когато данните, с които работите, са под формата на списък, както следва:

стоп код неочакван режим на ядрото капан
1. First
2. Second
3. Second
4. Second
5. Third
6. Third
7. Fourth
8. Fifth

За да игнорирате първите два знака (номерацията на списъка) във файла list.txt :

uniq -s 2 list.txt

Изход:

В горния изход първите два знака бяха игнорирани, а останалите бяха съпоставени за уникални редове.

Проверете първи N брой знаци за дубликати

The flag ви позволява да проверявате само определен брой знаци за дубликати. Например:

uniq -w 2 duplicate.txt

Гореспоменатата команда ще съответства само на първите два знака и ще отпечата уникални редове, ако има такива.

Изход:

Премахване на чувствителността към регистъра

Както бе споменато по-горе, uniq чувствителен към регистър, докато съответства на редове във файл. За да игнорирате регистъра на знаците, използвайте опция с командата.

uniq -i duplicate.txt

Ще видите следния изход.

Забележете в горния изход, uniq не показва редовете НАПРАВЕТЕ ТОВА и ТОВА Е ТЕКСТЕН ФАЙЛ .

Изпращане на изход към файл

За да изпратите резултата от командата uniq във файл, можете да използвате Пренасочване на изхода ( > ) характер, както следва:

uniq -i duplicate.txt > otherfile.txt

Докато изпращате изход към текстов файл, системата не показва изхода на командата. Можете да проверите съдържанието на новия файл с помощта на котка команда.

cat otherfile.txt

Можете да използвате и други начини изпращане на изход от командния ред до файл в Linux .

Анализ на дублирани данни с uniq

През повечето време, докато управлявате Linux сървъри, ще работите или върху терминала, или ще редактирате текстови файлове. Следователно, знанието как да премахнете излишните копия на редове в текстов файл може да бъде чудесно предимство за вашия набор от умения за Linux.

Работата с текстови файлове може да бъде разочароваща, ако не знаете как да филтрирате и сортирате текст във файл. За да улесните работата си, Linux има няколко команди за редактиране на текст, като например sed и awk които ви позволяват да работите ефективно с текстови файлове и изходи от командния ред.

Дял Дял Туит електронна поща Тези 10 примера за Sed ще ви направят Linux потребител

Искате ли да станете силен потребител на Linux? Разбирането на sed ще помогне. Учете се от тези 10 примера за sed.

Прочетете Напред
Свързани теми
  • Linux
  • Linux
За автора Дийпеш Шарма(79 статии са публикувани)

Deepesh е младши редактор за Linux в MUO. Той пише информационни ръководства за Linux, като има за цел да осигури блажено преживяване на всички новодошли. Не съм сигурен за филмите, но ако искате да говорите за технологии, той е вашият човек. В свободното си време можете да го намерите да чете книги, да слуша различни музикални жанрове или да свири на китара.

Още от Deepesh Sharma

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и изключителни оферти!

Щракнете тук, за да се абонирате
Категория Linux