Cut Command v Linuxu

V systémech Linux a Unix je k dispozici mnoho obslužných programů, které vám umožňují zpracovávat a filtrovat textové soubory. cut je obslužný program příkazového řádku, který vám umožňuje vystřihnout části řádků ze zadaných souborů nebo z pipovaných dat a výsledek vytisknout na standardní výstup. Lze jej použít k oříznutí částí řádku oddělovačem, pozicí bajtu a znakem.

V tomto článku vám ukážeme, jak používat cut příkaz prostřednictvím praktických příkladů a podrobného vysvětlení nejběžnějších možností.

Jak používat příkaz cut # #

Syntaxe cut příkaz je následující:

Možnosti, které říkají cut, zda použít oddělovač, pozice bajtu nebo znak při vyřezávání vybraných částí jsou řádky následující:

Můžete použít jednu a pouze jednu z výše uvedených možností.

Další možnosti jsou :

  • -d (--delimiter) – zadejte oddělovač, který bude použit místo výchozího nastavení “ Oddělovač TAB ”.
  • --complement – doplňte výběr. Při použití této možnosti cut zobrazí všechny bajty, znaky, nebo pole kromě se načteno.
  • -s (--only-delimited) – ve výchozím nastavení cut vypíše řádky, které neobsahují žádný oddělovací znak. Pokud je použita tato možnost, cut netiskne řádky neobsahující oddělovače.
  • --output-delimiter – výchozí chování z cut je použít oddělovač vstupu jako oddělovač výstupu. Tato možnost umožňuje zadat jiný řetězec oddělovače výstupu.

Příkaz cut může přijímat nulové nebo více vstupních názvů SOUBORŮ. Pokud není zadán FILE, nebo když FILE je -, cut bude číst ze standardního vstupu.

Argument LIST předaný -f Možnosti, -b a -c mohou být celé číslo, více celých čísel oddělených čárkami, rozsah celých čísel nebo více celých rozsahů oddělených čárkami . Každý rozsah může být jedním z následujících:

  • N N-té pole, bajt nebo znak, počínaje 1.
  • N- od N-tého pole, bajtu nebo znaku, na konec řádku.
  • N-M od N-tého do M-tého pole, bajtu nebo znaku.
  • -M od prvního do M-tého pole, bajtu nebo znaku.

Jak vyjmout pole #

Chcete-li určit pole, která mají být vystřižena, vyvolejte příkaz pomocí možnosti -f. Pokud není zadán, výchozí oddělovač je „TAB“.

V níže uvedených příkladech použijeme následující soubor. Pole jsou oddělena tabulátory.

test.txt

Chcete-li například zobrazit první a třetí pole, které byste použili:

Nebo chcete-li zobrazit od 1. do 4. pole:

Jak vyjmout na základě oddělovače #

Chcete-li vyjmout na základě oddělovače, vyvolajte příkaz pomocí -d a za ním oddělovač, který chcete použít.

Chcete-li například zobrazit první a třetí pole s oddělovačem „:“, zadejte:

Jako oddělovač můžete použít libovolný znak. V následujícím příkladu používáme mezeru jako oddělovač a tisk druhého pole:

Jak doplnit výběr #

Chcete-li doplnit seznam výběrových polí, použijte volbu --complement. Tím se vytisknou pouze ta pole, která nejsou vybrána pomocí možnosti -f.

Následující příkaz vytiskne všechna pole kromě prvního a třetího:

Jak zadat oddělovač výstupu #

Chcete-li určit oddělovač výstupu, použijte --output-delimiter možnost. Například k nastavení oddělovače výstupu na _ byste použili:

Jak snížit o bajty a znaky #

Než budeme pokračovat, udělejme rozdíl mezi bajty a znaky.

Jeden bajt má 8 bitů a může představovat 256 různých hodnot. Když byl vytvořen standard ASCII, zohledňoval všechna písmena, číslice a symboly nezbytné pro práci s angličtinou. Tabulka znaků ASCII má 128 znaků a každý znak je reprezentován jedním bajtem.Když se počítače začaly stávat globálně dostupnými, začaly technologické společnosti zavádět nová kódování znaků pro různé jazyky. U jazyků, které mají více než 256 znaků, nebylo možné jednoduché mapování 1: 1. To vede k různým problémům, jako je sdílení dokumentů nebo procházení webových stránek, a byl zapotřebí nový standard Unicode, který zvládne většinu systémů psaní na světě. K řešení těchto problémů byl vytvořen UTF-8. V UTF-8 nejsou všechny znaky reprezentovány 1 bajtem. Znaky mohou být reprezentovány 1 bajtem až 4 bajty.

Možnost -b (--bytes) říká příkazu oříznout sekce z každého řádku určeného danými pozicemi bajtů.

V následujících příkladech používáme znak ü, který trvá 2 bajty.

Vyberte 5. bajt:

Vyberte 5., 9. a 13. bajt:

Vyberte rozsah od 1. do 5. bajtu:

V době psaní tohoto článku verze cut dodávaná v GNU coreutils nemá možnost řezání podle znaků. Při použití možnosti -c se cut chová stejně jako při použití možnosti -b.

Příklady vyjmutí #

Příkaz cut se obvykle používá v kombinaci s jinými příkazy pomocí propojení. Zde je několik příkladů:

Získejte seznam všech uživatelů #

Výstup příkazu getent passwd je předán cut, který vytiskne první pole pomocí : jako oddělovače.

Výstup zobrazuje seznam všech uživatelů systému.

Zobrazit 10 nejčastěji používaných příkazů #

V následujícím příkladu je použit cut odstranit prvních 8 bajtů z každého řádku výstupu příkazu history.

Závěr #

cut příkaz se používá k zobrazení vybraných polí z každého řádku daných souborů nebo standardního vstupu.

Ačkoli je to velmi užitečné, cut má určitá omezení. Nepodporuje zadání více než jednoho znaku jako oddělovače a nepodporuje více oddělovačů.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *