Jak znaleźć zduplikowane dane w pliku tekstowym systemu Linux za pomocą uniq

Jak znaleźć zduplikowane dane w pliku tekstowym systemu Linux za pomocą uniq

Czy kiedykolwiek natknąłeś się na pliki tekstowe z powtarzającymi się liniami i zduplikowanymi słowami? Może regularnie pracujesz z danymi wyjściowymi poleceń i chcesz je filtrować pod kątem odrębnych ciągów. Jeśli chodzi o pliki tekstowe i usuwanie zbędnych danych w systemie Linux, najlepszym rozwiązaniem jest polecenie uniq.





W tym artykule szczegółowo omówimy polecenie uniq wraz ze szczegółowym przewodnikiem, jak używać tego polecenia do usuwania zduplikowanych wierszy z pliku tekstowego.





Co to jest unikalne polecenie?

Polecenie uniq w Linuksie służy do wyświetlania identycznych wierszy w pliku tekstowym. To polecenie może być pomocne, jeśli chcesz usunąć zduplikowane słowa lub ciągi z pliku tekstowego. Ponieważ polecenie uniq dopasowuje sąsiednie wiersze w celu znalezienia zbędnych kopii, działa tylko z posortowanymi plikami tekstowymi.





Na szczęście możesz fajkować sortować polecenie z uniq, aby uporządkować plik tekstowy w sposób zgodny z poleceniem. Oprócz wyświetlania powtarzających się linii, komenda uniq może również zliczać występowanie zduplikowanych linii w pliku tekstowym.

Jak korzystać z unikalnego polecenia

Istnieją różne opcje i flagi, których można używać z uniq. Niektóre z nich są podstawowe i wykonują proste operacje, takie jak drukowanie powtarzających się linii, podczas gdy inne są przeznaczone dla zaawansowanych użytkowników, którzy często pracują z plikami tekstowymi w systemie Linux.



Podstawowa składnia

Podstawowa składnia polecenia uniq to:

uniq option input output

...gdzie opcja to flaga używana do wywołania określonych metod polecenia, Wejście jest plikiem tekstowym do przetworzenia i wyjście jest ścieżką pliku, w którym będą przechowywane dane wyjściowe.





ten wyjście argument jest opcjonalny i można go pominąć. Jeśli użytkownik nie określi pliku wejściowego, uniq pobiera dane ze standardowego wyjścia jako dane wejściowe. Pozwala to użytkownikowi na uniq potoków z inne polecenia Linuksa .

Przykładowy plik tekstowy

Będziemy używać pliku tekstowego duplikat.txt jako dane wejściowe polecenia.





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.

Zauważ, że posortowaliśmy już ten plik tekstowy za pomocą sortować Komenda. Jeśli pracujesz z innym plikiem tekstowym, możesz go posortować za pomocą następującego polecenia:

sort filename.txt > sorted.txt

Usuń zduplikowane linie

Najbardziej podstawowym zastosowaniem uniq jest usuwanie powtarzających się ciągów z danych wejściowych i wypisywanie unikalnych danych wyjściowych.

uniq duplicate.txt

Wyjście:

Zauważ, że system nie wyświetla drugiego wystąpienia linii To jest plik tekstowy . Ponadto wspomniane polecenie drukuje tylko unikalne wiersze w pliku i nie wpływa na zawartość oryginalnego pliku tekstowego.

Policz powtarzające się linie

Aby wyprowadzić liczbę powtórzonych wierszy w pliku tekstowym, użyj -C flaga z domyślnym poleceniem.

uniq -c duplicate.txt

Wyjście:

System wyświetla liczbę każdej linii, która istnieje w pliku tekstowym. Widać, że linia To jest plik tekstowy występuje w pliku dwa razy. Domyślnie w komendzie uniq rozróżniana jest wielkość liter.

Aby wydrukować tylko zduplikowane wiersze z pliku tekstowego, użyj -D flaga. ten -D oznacza Duplikować .

uniq -D duplicate.txt

System wyświetli dane wyjściowe w następujący sposób.

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

Pomiń pola podczas sprawdzania duplikatów

Jeśli chcesz pominąć określoną liczbę pól podczas dopasowywania ciągów, możesz użyć -F flaga z poleceniem. ten -F oznacza Pole .

Rozważ następujący plik tekstowy pola.txt .

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

Aby pominąć pierwsze pole:

uniq -f 1 fields.txt

Wyjście:

192.168.0.1 TCP
Linux FS

Wspomniane polecenie pominęło pierwsze pole (adresy IP i nazwy systemów operacyjnych) i dopasowało drugie słowo (TCP i FS). Następnie jako wynik wyświetlał pierwsze wystąpienie każdego dopasowania.

Ignoruj ​​znaki podczas porównywania

Podobnie jak pomijanie pól, możesz również pomijać znaki. ten -s flaga pozwala określić liczbę znaków do pominięcia podczas dopasowywania zduplikowanych wierszy. Ta funkcja pomaga, gdy dane, z którymi pracujesz, mają postać listy w następujący sposób:

dlaczego hbo max nie działa?
1. First
2. Second
3. Second
4. Second
5. Third
6. Third
7. Fourth
8. Fifth

Aby zignorować pierwsze dwa znaki (numerację list) w pliku lista.txt :

uniq -s 2 list.txt

Wyjście:

W powyższym wyniku pierwsze dwa znaki zostały zignorowane, a pozostałe zostały dopasowane do unikalnych linii.

Sprawdź pierwszą liczbę N znaków dla duplikatów

ten -w flaga pozwala sprawdzić tylko ustaloną liczbę znaków pod kątem duplikatów. Na przykład:

uniq -w 2 duplicate.txt

Wspomniane polecenie dopasuje tylko pierwsze dwa znaki i wydrukuje unikalne linie, jeśli takie istnieją.

Wyjście:

Usuń rozróżnianie wielkości liter

Jak wspomniano powyżej, w uniq rozróżniana jest wielkość liter podczas dopasowywania wierszy w pliku. Aby zignorować wielkość liter, użyj -i opcja z poleceniem.

uniq -i duplicate.txt

Zobaczysz następujące dane wyjściowe.

Zwróć uwagę na powyższe dane wyjściowe, uniq nie wyświetlał linii Złap to oraz TO JEST PLIK TEKSTOWY .

Wyślij wynik do pliku

Aby wysłać wynik polecenia uniq do pliku, możesz użyć Przekierowanie wyjścia ( > ) znak w następujący sposób:

uniq -i duplicate.txt > otherfile.txt

Podczas wysyłania danych wyjściowych do pliku tekstowego system nie wyświetla danych wyjściowych polecenia. Możesz sprawdzić zawartość nowego pliku za pomocą Kot Komenda.

cat otherfile.txt

Możesz także użyć innych sposobów, aby wyślij dane wyjściowe wiersza poleceń do pliku w systemie Linux .

Analiza zduplikowanych danych za pomocą uniq

Przez większość czasu podczas zarządzania serwerami Linux będziesz pracować na terminalu lub edytować pliki tekstowe. Dlatego wiedza o tym, jak usunąć nadmiarowe kopie wierszy z pliku tekstowego, może być wielkim atutem zestawu umiejętności związanych z Linuksem.

Praca z plikami tekstowymi może być frustrująca, jeśli nie wiesz, jak filtrować i sortować tekst w pliku. Aby ułatwić Ci pracę, Linux ma kilka poleceń edycji tekstu, takich jak sed oraz awk które umożliwiają wydajną pracę z plikami tekstowymi i danymi wyjściowymi wiersza polecenia.

Udział Udział Ćwierkać E-mail Te 10 przykładów Sed sprawi, że staniesz się zaawansowanym użytkownikiem Linuksa

Chcesz zostać zaawansowanym użytkownikiem Linuksa? Pomocne będzie opanowanie seda. Ucz się z tych 10 sedowych przykładów.

Czytaj dalej
Powiązane tematy
  • Linux
  • Linux
O autorze Deepesh Sharma(79 opublikowanych artykułów)

Deepesh to Junior Editor dla Linuksa w MUO. Pisze przewodniki informacyjne o Linuksie, których celem jest zapewnienie błogiego doświadczenia wszystkim nowicjuszom. Nie jestem pewien co do filmów, ale jeśli chcesz porozmawiać o technologii, to jest twój facet. W wolnym czasie można go spotkać czytającego książki, słuchającego różnych gatunków muzycznych lub grającego na gitarze.

Więcej od Deepesha Sharma

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować