GNU/Linux >> Znalost Linux >  >> Linux

Cut Command v Linuxu

V systémech Linux a Unix je k dispozici mnoho nástrojů, které umožňují zpracovávat a filtrovat textové soubory. cut je nástroj příkazového řádku, který vám umožňuje vyjmout části čar ze zadaných souborů nebo dat z potrubí a vytisknout výsledek na standardní výstup. Lze jej použít k vyříznutí částí řádku podle oddělovače, pozice bajtu a znaku.

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

Jak používat cut Příkaz #

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

cut OPTION... [FILE]...

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

  • -f (--fields=LIST ) - Vyberte zadáním pole, sady polí nebo rozsahu polí. Toto je nejčastěji používaná možnost.
  • -b (--bytes=LIST ) – Vyberte zadáním bajtu, sady bajtů nebo rozsahu bajtů.
  • -c (--characters=LIST ) – Vyberte zadáním znaku, sady znaků nebo rozsahu znaků.

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 namísto výchozího oddělovače „TAB“.
  • --complement - Doplňte výběr. Při použití této možnosti cut zobrazí všechny bajty, znaky nebo pole kromě vybraných.
  • -s (--only-delimited ) – Ve výchozím nastavení cut vytiskne řádky, které neobsahují žádný oddělovací znak. Při použití této možnosti cut netiskne řádky neobsahující oddělovače.
  • --output-delimiter - Výchozí chování cut je použít vstupní oddělovač jako výstupní oddělovač. Tato možnost vám umožňuje zadat jiný řetězec oddělovače výstupu.

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

LIST argument předán do -f , -b a -c možnosti mohou být celé číslo, více celých čísel oddělených čárkami, rozsah celých čísel nebo více rozsahů celých čísel oddělených čárkami. Každý rozsah může být jeden 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 z N-tého na M-té pole, bajt nebo znak.
  • -M od prvního do M-tého pole, bajtu nebo znaku.

Jak řezat podle pole #

Chcete-li zadat pole, která mají být vyříznuta, vyvolejte příkaz s -f volba. 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
245:789 4567    M:4540  Admin   01:10:1980
535:763 4987    M:3476  Sales   11:04:1978

Například pro zobrazení 1. a 3. pole byste použili:

cut test.txt -f 1,3
245:789	M:4540
535:763	M:3476

Nebo pokud chcete zobrazit od 1. do 4. pole:

cut test.txt -f -4
245:789	4567	M:4540	Admin
535:763	4987	M:3476	Sales

Jak stříhat na základě oddělovače #

Chcete-li řezat na základě oddělovače, vyvolejte příkaz s -d následuje oddělovač, který chcete použít.

Chcete-li například zobrazit 1. a 3. pole pomocí „:“ jako oddělovače, zadejte:

cut test.txt -d ':' -f 1,3
245:4540	Admin	01
535:3476	Sales	11

Jako oddělovač můžete použít libovolný jednotlivý znak. V následujícím příkladu používáme jako oddělovač znak mezery a tiskneme 2. pole:

echo "Lorem ipsum dolor sit amet" | cut -d ' ' -f 2
ipsum

Jak doplnit výběr #

K doplnění seznamu polí výběru použijte --complement volba. Tím se vytisknou pouze ta pole, která nejsou vybrána pomocí -f možnost.

Následující příkaz vytiskne všechna pole kromě 1. a 3.:

cut test.txt -f 1,3 --complement
4567	Admin	01:10:1980
4987	Sales	11:04:1978

Jak určit výstupní oddělovač #

Chcete-li zadat oddělovač výstupu, použijte --output-delimiter volba. Chcete-li například nastavit oddělovač výstupu na _ byste použili:

cut test.txt -f 1,3 --output-delimiter='_'
245:789_M:4540
535:763_M:3476

Jak vyjmout po bajtech a znacích #

Než půjdeme dále, 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 zaveden standard ASCII, bral v úvahu všechna písmena, čísla a symboly nezbytné pro práci s angličtinou. Tabulka znaků ASCII má 128 znaků a každý znak představuje jeden bajt. Když se počítače začaly stávat globálně přístupnými, technologické společnosti začaly zavádět nová kódování znaků pro různé jazyky. U jazyků, které mají více než 256 znaků, nebylo jednoduché mapování 1:1 možné. 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 světových systémů psaní. K vyřešení těchto problémů bylo vytvořeno UTF-8. V UTF-8 nejsou všechny znaky reprezentovány 1 bajtem. Znaky mohou být reprezentovány 1 až 4 bajty.

-b (--bytes ) sděluje příkazu, aby vyřízl části 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:

echo 'drüberspringen' | cut -b 5
b

Vyberte 5., 9. a 13. bajt:

echo 'drüberspringen' | cut -b 5,9,13
bpg

Vyberte rozsah od 1. do 5. bajtu:

echo 'drüberspringen' | cut -b 1-5
drüb

V době psaní tohoto článku byla verze cut svázaný v GNU coreutils nemá možnost řezu podle znaků. Při použití -c možnost, cut chová se stejně jako při použití -b možnost.

Příklady vyjmutí #

cut příkaz se obvykle používá v kombinaci s jinými příkazy prostřednictvím potrubí. Zde je několik příkladů:

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

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

getent passwd | cut -d ':' -f1

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 cut se používá k odstranění prvních 8 bajtů z každého řádku history výstup příkazu.

history | cut -c8- | sort | uniq -c | sort -rn | head

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č a nepodporuje více oddělovačů.

Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.


Linux
  1. Linuxový příkaz mv

  2. Linux du command

  3. Linuxový ip příkaz

  1. Linux cd příkaz

  2. vložit příklady příkazů v Linuxu

  3. Příklady příkazů cut v Linuxu

  1. Linux cut Command Vysvětlení pomocí 6 příkladů

  2. Linux příkaz ifconfig

  3. Linux Time Command