Jak najít duplicitní data v textovém souboru Linux s uniq

Jak najít duplicitní data v textovém souboru Linux s uniq

Setkali jste se někdy s textovými soubory s opakujícími se řádky a duplicitními slovy? Možná pravidelně pracujete s výstupem příkazů a chcete je filtrovat pro odlišné řetězce. Pokud jde o textové soubory a odstraňování nadbytečných dat v systému Linux, je nejlepší volbou příkaz uniq.





V tomto článku probereme podrobně příkaz uniq spolu s podrobným průvodcem, jak pomocí příkazu odstranit duplicitní řádky z textového souboru.





Co je příkaz uniq?

Příkaz uniq v systému Linux slouží k zobrazení stejných řádků v textovém souboru. Tento příkaz může být užitečný, pokud chcete z textového souboru odebrat duplicitní slova nebo řetězce. Protože příkaz uniq vyhledává nadbytečné kopie, sousední řádky, funguje pouze s tříděnými textovými soubory.





Naštěstí můžete dýmku třídit příkaz s uniq uspořádat textový soubor způsobem, který je kompatibilní s příkazem. Kromě zobrazení opakovaných řádků může příkaz uniq také počítat výskyt duplicitních řádků v textovém souboru.

Jak používat příkaz uniq

S uniqem můžete použít různé možnosti a příznaky. Některé z nich jsou základní a provádějí jednoduché operace, jako je tisk opakovaných řádků, zatímco jiné jsou pro pokročilé uživatele, kteří v Linuxu často pracují s textovými soubory.



Základní syntaxe

Základní syntaxe příkazu uniq je:

uniq option input output

...kde volba je příznak používaný k vyvolání konkrétních metod příkazu, vstup je textový soubor pro zpracování a výstup je cesta k souboru, který bude ukládat výstup.





The výstup argument je nepovinný a lze jej přeskočit. Pokud uživatel nezadá vstupní soubor, uniq převezme jako vstup data ze standardního výstupu. To umožňuje uživateli propojit uniq s další příkazy Linuxu .

Příklad textového souboru

Použijeme textový soubor duplicate.txt jako vstup pro příkaz.





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.

Všimněte si, že tento textový soubor jsme již setřídili pomocí třídit příkaz. Pokud pracujete s jiným textovým souborem, můžete jej seřadit pomocí následujícího příkazu:

sort filename.txt > sorted.txt

Odstranit duplicitní řádky

Nejzákladnějším použitím uniq je odebrání opakovaných řetězců ze vstupu a tisk jedinečného výstupu.

uniq duplicate.txt

Výstup:

Všimněte si, že systém nezobrazuje druhý výskyt řádku Toto je textový soubor . Výše uvedený příkaz také vytiskne pouze jedinečné řádky v souboru a neovlivní obsah původního textového souboru.

Počítat opakované řádky

Chcete -li zobrazit počet opakujících se řádků v textovém souboru, použijte -C vlajka s výchozím příkazem.

uniq -c duplicate.txt

Výstup:

Systém zobrazí počet každého řádku, který existuje v textovém souboru. Můžete vidět, že řádek Toto je textový soubor se v souboru vyskytuje dvakrát. Ve výchozím nastavení příkaz uniq rozlišuje velká a malá písmena.

Chcete -li z textového souboru tisknout pouze duplicitní řádky, použijte -D vlajka. The -D znamená Duplikát .

uniq -D duplicate.txt

Systém zobrazí výstup následujícím způsobem.

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

Přeskakujte pole při kontrole duplikátů

Pokud chcete přeskočit určitý počet polí a přitom odpovídat řetězcům, můžete použít -F vlajka s příkazem. The -F znamená Pole .

Zvažte následující textový soubor fields.txt .

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

Přeskočení prvního pole:

uniq -f 1 fields.txt

Výstup:

192.168.0.1 TCP
Linux FS

Výše uvedený příkaz přeskočil první pole (IP adresy a názvy OS) a odpovídal druhému slovu (TCP a FS). Poté jako výstup zobrazil první výskyt každé shody.

Při porovnávání ignorujte znaky

Stejně jako přeskakování polí můžete přeskakovat i postavy. The -s příznak umožňuje určit počet znaků, které se mají přeskočit při shodě s duplicitními řádky. Tato funkce pomáhá, když jsou data, se kterými pracujete, ve formě seznamu následovně:

Windows 10 vypnout upozornění na poštu
1. First
2. Second
3. Second
4. Second
5. Third
6. Third
7. Fourth
8. Fifth

Ignorovat první dva znaky (číslování seznamů) v souboru list.txt :

uniq -s 2 list.txt

Výstup:

Ve výše uvedeném výstupu byly první dva znaky ignorovány a zbývající byly spojeny pro jedinečné řádky.

Zkontrolujte první N počet znaků pro duplikáty

The -v příznak umožňuje kontrolovat duplikáty pouze pevného počtu znaků. Například:

uniq -w 2 duplicate.txt

Výše uvedený příkaz bude odpovídat pouze prvním dvěma znakům a vytiskne jedinečné řádky, pokud existují.

Výstup:

Odstraňte rozlišování malých a velkých písmen

Jak již bylo uvedeno výše, uniq rozlišuje velká a malá písmena, zatímco odpovídá řádkům v souboru. Chcete -li ignorovat velká a malá písmena, použijte -i možnost pomocí příkazu.

uniq -i duplicate.txt

Uvidíte následující výstup.

Všimněte si výše uvedeného výstupu, uniq nezobrazoval řádky CHYTTE TOTO a TOTO JE TEXTOVÝ SOUBOR .

Odeslat výstup do souboru

Chcete -li odeslat výstup příkazu uniq do souboru, můžete použít Přesměrování výstupu ( > ) znak takto:

uniq -i duplicate.txt > otherfile.txt

Při odesílání výstupu do textového souboru systém nezobrazí výstup příkazu. Obsah nového souboru můžete zkontrolovat pomocí kočka příkaz.

cat otherfile.txt

Můžete také použít jiné způsoby odeslat výstup příkazového řádku do souboru v Linuxu .

Analýza duplicitních dat pomocí uniq

Při správě serverů Linux budete většinu času pracovat buď na terminálu, nebo upravovat textové soubory. Proto vědět, jak odstranit nadbytečné kopie řádků v textovém souboru, může být velkým přínosem pro vaši sadu dovedností Linuxu.

Práce s textovými soubory může být frustrující, pokud nevíte, jak filtrovat a třídit text v souboru. Aby byla vaše práce jednodušší, má Linux několik příkazů pro úpravu textu, jako například sed a awk které vám umožní efektivně pracovat s textovými soubory a výstupy příkazového řádku.

Podíl Podíl tweet E-mailem Těchto 10 příkladů sedadel z vás udělá výkonného uživatele Linuxu

Chcete se stát výkonným uživatelem Linuxu? Seznámení se sed pomůže. Učte se z těchto 10 příkladů sed.

Číst dále
Související témata
  • Linux
  • Linux
O autorovi Deepesh Sharma(79 článků zveřejněno)

Deepesh je juniorský editor pro Linux na MUO. Píše informační příručky pro Linux s cílem poskytnout všem nováčkům blažený zážitek. Nejste si jisti filmy, ale pokud chcete mluvit o technologii, je to váš chlap. Ve svém volném čase ho můžete najít číst knihy, poslouchat různé hudební žánry nebo hrát na kytaru.

Více od Deepesh Sharma

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné elektronické knihy a exkluzivní nabídky!

Kliknutím sem se přihlásíte k odběru