Usuwanie zduplikowanych wierszy z pliku tekstowego za pomocą linii poleceń Linux

Usuwanie zduplikowanych wierszy z pliku tekstowego za pomocą linii poleceń Linux

Usuwanie zduplikowanych wierszy z pliku tekstowego można wykonać z wiersza poleceń Linux. Takie zadanie może być bardziej powszechne i konieczne niż myślisz. Najczęstszym scenariuszem, w którym może to być pomocne, jest pliki dziennika. Często pliki dziennika powtarzają te same informacje w kółko, co sprawia, że ​​plik jest prawie niemożliwy do przesiewania, czasami czyniąc dzienniki bezużyteczne.

W tym przewodniku pokażemy różne przykłady wiersza poleceń, których możesz użyć do usuwania zduplikowania wierszy z pliku tekstowego. Wypróbuj niektóre polecenia we własnym systemie i użyj dowolnego z nich najwygodniej.

W tym samouczku nauczysz się:

  • Jak usunąć zduplikowane wiersze z pliku podczas sortowania
  • Jak zliczyć liczbę zduplikowanych linii w pliku
  • Jak usunąć zduplikowane wiersze bez sortowania pliku
Różne przykłady usuwania zduplikowanych wierszy z pliku tekstowego w Linux Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Każda dystrybucja Linux
Oprogramowanie Bash Shell
Inny Uprzywilejowany dostęp do systemu Linux jako root lub za pośrednictwem sudo Komenda.
Konwencje # - Wymaga, aby podane polecenia Linux są wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$ - Wymaga, aby podane polecenia Linux zostały wykonane jako zwykły użytkownik niepewny

Usuń zduplikowane wiersze z pliku tekstowego



Te przykłady będą działać na dowolnym dystrybucji Linuksa, pod warunkiem, że używasz powłoki bash.

W naszym przykładowym scenariuszu będziemy pracować z następującym plikami, który zawiera nazwy różnych dystrybucji Linux. Jest to bardzo prosty plik tekstowy ze względu na przykład, ale w rzeczywistości można użyć tych metod w dokumentach, które zawierają nawet tysiące powtarzających się linii. Zobaczymy, jak usunąć wszystkie duplikaty z tego pliku za pomocą poniższych przykładów.

$ Cat Distros.TXT Ubuntu Centos Debian Ubuntu Fedora Debian OpenSuse OpenSuse Debian 
  1. Uniq polecenie jest w stanie odizolować wszystkie unikalne wiersze z naszego pliku, ale działa to tylko wtedy, gdy zduplikowane wiersze są przylegające do siebie. Aby linie były przylegające, najpierw musiałyby być uporządkowane w kolejności alfabetycznej. Poniższe polecenie działałoby przy użyciu sortować I Uniq.
    $ distros.txt | Uniq Centos Debian Fedora OpenSuse Ubuntu 

    Aby to ułatwić, możemy po prostu użyć -u z sortowaniem, aby uzyskać ten sam dokładny wynik, zamiast ruroć do Uniq.



    $ sort -u distres.TXT CENTOS Debian Fedora Opensuse Ubuntu 
  2. Aby zobaczyć, ile wystąpień każdego wiersza jest w pliku, możemy użyć -C (Count) Opcja z Uniq.
    $ distros.txt | uniq -c 1 Centos 3 Debian 1 Fedora 2 OpenSuse 2 Ubuntu 
  3. Aby zobaczyć linie, które najczęściej się powtarzają, możemy przewrócić się do jeszcze innego sortowania z -N (Sort Numer) i -R Opcje odwrotne. To pozwala nam szybko zobaczyć, które wiersze są najbardziej powielane w pliku - kolejna przydatna opcja do przesiewania dzienników.
    $ distros.txt | uniq -c | sort -nr 3 Debian 2 Ubuntu 2 OpenSuse 1 Fedora 1 Centos 


  4. Jednym z problemów z korzystaniem z poprzednich poleceń jest to, że polegamy sortować. Oznacza to, że nasze ostateczne wyjście jest sortowane alfabetycznie lub sortowane według ilości powtórzeń jak w poprzednim przykładzie. Czasami może to być dobra rzecz, ale co, jeśli potrzebujemy pliku tekstowego, aby zachować poprzednią kolejność? Możemy wyeliminować zduplikowane wiersze bez sortowania pliku za pomocą Awk polecenie w następującej składni.
    $ awk '!Widziane [0 $] ++ 'Distros.TXT Ubuntu Centos Debian Fedora OpenSuse 

    Dzięki temu poleceniu przechowywane jest pierwsze wystąpienie linii, a przyszłe zduplikowane linie są złomowane z wyjścia.

  5. Poprzednie przykłady wyślą dane wyjściowe bezpośrednio do terminalu. Jeśli chcesz przefiltrować nowy plik tekstowy z zduplikowanymi wierszami, możesz dostosować dowolny z tych przykładów, używając po prostu > Operator bash, jak w następującym poleceniu.
    $ awk '!Widziane [0 $] ++ 'Distros.TXT> Distros-New.tekst 

Powinny to być wszystkie potrzebne polecenia, aby upuścić zduplikowane wiersze z pliku, przy jednoczesnym sortowaniu lub zliczaniu linii. Istnieje więcej metod, ale są to najłatwiejsze w użyciu i zapamiętanie.

Zamykanie myśli

W tym przewodniku widzieliśmy różne przykładowe przykład, aby usunąć zduplikowane wiersze z pliku tekstowego w Linux. Możesz zastosować te polecenia do plików dziennika lub dowolnego innego typu pliku PlainText, który ma zduplikowane wiersze. Nauczyliśmy się również, jak sortować linie pliku tekstowego lub liczyć liczbę duplikatów, ponieważ czasami może to przyspieszyć izolowanie potrzebnych informacji z dokumentu.

Powiązane samouczki Linux:

  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Jak poprawić renderowanie czcionek Firefox na Linuksie
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Mastering Bash Script Loops
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Polecenia Linux: Top 20 najważniejsze polecenia, które musisz…
  • Podstawowe polecenia Linux
  • Jak montować obraz ISO na Linux
  • Linux Pliki konfiguracyjne: Top 30 Najważniejsze
  • Przykłady rsync w Linux