Skip to content

Linux uniq Command: Co to je a jak to používat

11 de Srpen de 2021
linux uniq command what it is and how to use it 4776542 1 bf5a99c3366c482ca3cb532a799847de

Linux (a jeho předchůdce, Unix) byl postaven na prostém textu. Díky tomu má všechny druhy užitečných nástrojů pro zpracování textu, které můžete z terminálu použít. Obslužný program Linux uniq byl navržen tak, aby vám pomohl třídit textové soubory pro jedinečné hodnoty.

Co je Linux uniq a kdy byste jej použili?

The uniq příkaz je nainstalován na většině distribucí Linuxu ihned po vybalení a patří do balíčku coreutils. Používá se k identifikaci a ‚sbalení‘ řádků sousedního, identického textu. Pojďme tuto definici trochu rozbalit.

  • Základní jednotkou pro srovnání je řádek textu, tj. Veškerý text z jednoho řádku se vrací do dalšího. To může zahrnovat více vět za předpokladu, že jsou ve stejném odstavci.
  • Ve výchozím nastavení uniq porovnává pouze sousední řádky. To znamená, že pokud jsou dva řádky přesně stejné, ale mezi nimi je jiný, budou považovány za odlišné, pokud na příkaz nepoužijete různé možnosti (více o tom později).
  • V tomto kontextu „sbalení“ znamená, že pak uniq zobrazí svůj výstup, bude zahrnovat pouze první výskyt řádku.

Příkaz uniq vám pomůže procházet spoustou dat a identifikovat, které řádky jsou stejné, a odstranit je z výstupu.

Základní použití příkazu Linux uniq

Na základní úrovni je použití příkazu Linux uniq následující: uniq -o = hodnota/cesta/k/vstupní soubor

class = „ql-syntax“> Zde výše uvedené „o“ představuje zkratkový znak pro jednu z jeho možností. Můžete to také zadat v delší podobě, například: uniq –option = hodnota/cesta/do/vstupní soubor

class = „ql-syntax“> „Vstupní soubor“ musí být prostý textový soubor obsahující vaše data. V Linuxu existuje mnoho možností pro jedinečný příkaz, ale nemusí být zřejmé, jak to můžete použití tyto možnosti, které vám poskytnou užitečný výstup. Do některých z nich se v následujících částech hluboce ponoříme.

Odebrání sousedních duplikátů pomocí příkazu uniq

Ve své nejzákladnější podobě příkaz uniq „sbalí“ sousední duplikáty a zobrazí výsledky. Řekněme například, že začínáte nový blog a máte seznam lidí, kteří se přihlásili k odběru vašeho e -mailového zpravodaje (newsletter.txt), ale ještě nejsou členy. [email protected]
[email protected]
[email protected]
[email protected]
[email protected]

Protože byste nechtěli obtěžovat tyto lidi více než jednou, můžete to de-duplikovat pomocí následujícího: $ uniq newsletter.txt
[email protected]
[email protected]
[email protected]

Je pravda, že to samo o sobě není příliš vzrušující. Pokud by na konci souboru existoval třetí výskyt „[email protected]“, zůstal by. Je tedy důležité naučit se některé možnosti tohoto příkazu.

Počítání počtu výskytů s uniq

Počítání opakovaných řádků s uniq

Předpokládejme, že se váš blog rozjíždí a nejenže se lidé registrují, ale také se přihlašují! Pro peníze! A proč by ne? Seznam plateb, které obdržíte, začne růst. Smith John [email protected] 3,00 $
Smith John [email protected] 3,00 $
Smith John [email protected] 3,00 $
Smith John [email protected] 3,00 $
Smith John [email protected] 3,00 $
Smith John [email protected] 3,00 $
Smith John [email protected] 3,00 $
Smith John [email protected] 3,00 $
Peters Aaron [email protected] 10,00 USD
Peters Aaron [email protected] 10,00 USD
Peters Aaron [email protected] 10,00 USD
Miller Tim [email protected] 1,00 $
Miller Tim [email protected] 1,00 $
Miller Tim [email protected] 1,00 $
Miller Tim [email protected] 1,00 $
Miller Tim [email protected] 1,00 $
Miller Tim [email protected] 1,00 $
Jones Mary [email protected] 5,00 $
Jones Mary [email protected] 5,00 $
Jones Mary [email protected] 5,00 $
Jones Mary [email protected] 5,00 $
Jones Fred [email protected] 4,00 $
Jones Fred [email protected] 4,00 $
Jones Fred [email protected] 4,00 $
Jones Fred [email protected] 4,00 $
Jones Fred [email protected] 4,00 $

V určitém okamžiku budete chtít zhodnotit, jak dlouho jsou s vámi někteří vaši předplatitelé. Vzhledem k výše uvedenému seznamu jejich plateb k dnešnímu dni můžete mít uniq spočítejte počet výskytů pomocí -C vlajka: $ uniq -c payments.txt
8 Smith John [email protected] 3,00 $
3 Peters Aaron [email protected] 10,00 USD
6 Miller Tim [email protected] 1,00 $
4 Jones Mary [email protected] 5,00 $
5 Jones Fred [email protected] 4,00 $

To však opět závisí na sousedních řádcích … pokud by existovaly nějaké, které nebyly, ve výstupu programu, který je navržen k de-duplikaci, by byly duplikáty! Z tohoto důvodu, uniq je nejužitečnější, když se používá ve spojení s třídit příkaz.

Zobrazení jedinečných řádků s příkazy řazení a uniq

Pomůže nám zde příkaz sort, který zařídí duplicitní řádky tak, aby oni jsou sousedící, čímž umožňuje uniq aby je odfiltrovali. Představte si například, že výše uvedená zpráva o platbě nepřišla pěkně objednaná: Smith John [email protected] 3,00 USD
Jones Fred [email protected] 4,00 $
Miller Tim [email protected] 1,00 $
Peters Aaron [email protected] 10,00 USD
Jones Mary [email protected] 5,00 $
Peters Aaron [email protected] 10,00 USD
Miller Tim [email protected] 1,00 $
Jones Fred [email protected] 4,00 $
Smith John [email protected] 3,00 $
Jones Fred [email protected] 4,00 $
Peters Aaron [email protected] 10,00 USD
Jones Fred [email protected] 4,00 $
Jones Fred [email protected] 4,00 $
Miller Tim [email protected] 1,00 $
Jones Mary [email protected] 5,00 $
Smith John [email protected] 3,00 $
Miller Tim [email protected] 1,00 $
Smith John [email protected] 3,00 $
Smith John [email protected] 3,00 $
Smith John [email protected] 3,00 $
Smith John [email protected] 3,00 $
Jones Mary [email protected] 5,00 $
Jones Mary [email protected] 5,00 $
Miller Tim [email protected] 1,00 $
Miller Tim [email protected] 1,00 $
Smith John [email protected] 3,00 $

V takovém případě byste chtěli nejprve spustit tento seznam třídit seskupte všechny podobné položky dohromady a poté spusťte uniq. Toto používá trubka operátor na příkazovém řádku („|“), kde jsou výsledky příkazu před tím, než se potrubí zavede přímo do druhého příkazu. Když to tedy spustíme na našich smíšených platbách, získáme jedinečné výsledky (s jejich počtem): $ sort payments-rand.txt | uniq -c
5 Jones Fred [email protected] 4,00 $
4 Jones Mary [email protected] 5,00 $
6 Miller Tim [email protected] 1,00 $
3 Peters Aaron [email protected] 10,00 USD
8 Smith John [email protected] 3,00 $

Pro rychlou analýzu dat použijte příkaz uniq

Když se blíže seznámíte s příkazovým řádkem Linuxu, najdete spoustu užitečných programů, jako je uniq. Jistě, výše uvedené můžete otevřít v Excelu a třídit tak, ale pak byste nezačali vydělávat žádné technické kredity, že?