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
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?