
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. Jsmith@example.com
Jsmith@example.com
Tmiller@example.com
Mjones@example.com
Mjones@example.com
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
Jsmith@example.com
Tmiller@example.com
Mjones@example.com
Je pravda, že to samo o sobě není příliš vzrušující. Pokud by na konci souboru existoval třetí výskyt „Jsmith@example.com“, 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
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 Jsmith@example.com 3,00 $
Smith John Jsmith@example.com 3,00 $
Smith John Jsmith@example.com 3,00 $
Smith John Jsmith@example.com 3,00 $
Smith John Jsmith@example.com 3,00 $
Smith John Jsmith@example.com 3,00 $
Smith John Jsmith@example.com 3,00 $
Smith John Jsmith@example.com 3,00 $
Peters Aaron Apeters@example.com 10,00 USD
Peters Aaron Apeters@example.com 10,00 USD
Peters Aaron Apeters@example.com 10,00 USD
Miller Tim Tmiller@example.com 1,00 $
Miller Tim Tmiller@example.com 1,00 $
Miller Tim Tmiller@example.com 1,00 $
Miller Tim Tmiller@example.com 1,00 $
Miller Tim Tmiller@example.com 1,00 $
Miller Tim Tmiller@example.com 1,00 $
Jones Mary Mjones@example.com 5,00 $
Jones Mary Mjones@example.com 5,00 $
Jones Mary Mjones@example.com 5,00 $
Jones Mary Mjones@example.com 5,00 $
Jones Fred Fjones@example.com 4,00 $
Jones Fred Fjones@example.com 4,00 $
Jones Fred Fjones@example.com 4,00 $
Jones Fred Fjones@example.com 4,00 $
Jones Fred Fjones@example.com 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 Jsmith@example.com 3,00 $
3 Peters Aaron Apeters@example.com 10,00 USD
6 Miller Tim Tmiller@example.com 1,00 $
4 Jones Mary Mjones@example.com 5,00 $
5 Jones Fred Fjones@example.com 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 Jsmith@example.com 3,00 USD
Jones Fred Fjones@example.com 4,00 $
Miller Tim Tmiller@example.com 1,00 $
Peters Aaron Apeters@example.com 10,00 USD
Jones Mary Mjones@example.com 5,00 $
Peters Aaron Apeters@example.com 10,00 USD
Miller Tim Tmiller@example.com 1,00 $
Jones Fred Fjones@example.com 4,00 $
Smith John Jsmith@example.com 3,00 $
Jones Fred Fjones@example.com 4,00 $
Peters Aaron Apeters@example.com 10,00 USD
Jones Fred Fjones@example.com 4,00 $
Jones Fred Fjones@example.com 4,00 $
Miller Tim Tmiller@example.com 1,00 $
Jones Mary Mjones@example.com 5,00 $
Smith John Jsmith@example.com 3,00 $
Miller Tim Tmiller@example.com 1,00 $
Smith John Jsmith@example.com 3,00 $
Smith John Jsmith@example.com 3,00 $
Smith John Jsmith@example.com 3,00 $
Smith John Jsmith@example.com 3,00 $
Jones Mary Mjones@example.com 5,00 $
Jones Mary Mjones@example.com 5,00 $
Miller Tim Tmiller@example.com 1,00 $
Miller Tim Tmiller@example.com 1,00 $
Smith John Jsmith@example.com 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 Fjones@example.com 4,00 $
4 Jones Mary Mjones@example.com 5,00 $
6 Miller Tim Tmiller@example.com 1,00 $
3 Peters Aaron Apeters@example.com 10,00 USD
8 Smith John Jsmith@example.com 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?