Android

Linux cut příkaz s příklady

СТРАХ СМЕРТИ. Игра профессионалов. Что такое сознание? Фильм 8

СТРАХ СМЕРТИ. Игра профессионалов. Что такое сознание? Фильм 8

Obsah:

Anonim

V systémech Linux a Unix je k dispozici mnoho nástrojů, které umožňují zpracovávat a filtrovat textové soubory. Vyjmout je obslužný program příkazového řádku, který umožňuje vyjmout části řádků z určených souborů nebo dat z potrubí a výsledek vytisknout na standardní výstup. Může být použit k oříznutí částí čáry oddělovačem, bajtovou pozicí a postavou.

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

Jak používat příkaz Vyjmout

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

cut OPTION……

Při použití příkazu cut musíte použít jednu a pouze jednu z následujících možností:

  • -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 ) - Výběr zadáním znaku, sady znaků nebo rozsahu znaků.

Další možnosti jsou:

  • -d ( --delimiter ) - Určete oddělovač, který bude použit místo výchozího oddělovače „TAB“. --complement - doplní výběr. Při použití této možnosti bude řez zobrazovat všechny bajty, znaky nebo pole kromě vybraných. -s ( --only-delimited ) - Ve výchozím nastavení bude výtisk vytištěn každý řádek, který neobsahuje žádný oddělovač. Při použití této možnosti nebude řez tisknout řádky neobsahující oddělovače. --output-delimiter - Výchozí je použít oddělovač vstupu jako oddělovač výstupu. Tato volba umožňuje určit jiný řetězec oddělovače výstupu.

Příkaz cut může akceptovat nulové nebo více vstupních názvů FILE. Není-li zadán žádný SOUBOR, nebo když je SOUBOR - , bude řez načten standardní vstup.

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

  • N té pole, bajt nebo znak, počínaje 1. N- od N-tého pole, bajt nebo znak, až po konec řádku. NM z Nth do Mth pole, bajtu nebo znaku. -M od prvního do Mth pole, bajtu nebo znaku.

Jak snížit pole

Příkaz Vyjmout se většinou používá k zobrazení vybraných polí z každého řádku souborů nebo standardního vstupu. Pokud není uvedeno, je výchozí oddělovač „TAB“.

V níže uvedených příkladech použijeme následující soubor. Všechna 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

Chcete-li zobrazit první a třetí pole, které 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 snížit na základě oddělovače

Řez na základě oddělovače použijte volbu -d následovanou oddělovačem, který chcete použít.

Chcete-li například zobrazit 1. a 3. pole pomocí 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ý jeden znak. V následujícím příkladu použijeme mezeru jako oddělovač a vytiskneme druhé pole:

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

ipsum

Jak doplnit výběr

Chcete-li doplnit seznam polí výběru, použijte volbu --complement . Tím se vytisknou pouze ta pole, která nejsou vybrána s volbou -f .

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 oddělovač výstupu

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

cut test.txt -f 1, 3 --output-delimiter='_'

245:789_M:4540 535:763_M:3476

Jak snížit o bajty a postavy

Než začneme dále, rozlišujme bajty a znaky.

Jeden bajt má 8 bitů a může představovat 256 různých hodnot. Když byl zaveden standard ASCII, zohlednil všechna písmena, čísla 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 celosvětově populární, technické společnosti začaly zavádět nové kódování znaků pro různé jazyky a pro jazyky, 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 prohlížení webových stránek a byl nutný nový standard Unicode, který zvládne většinu světových systémů psaní. K vyřešení těchto problémů byl vytvořen UTF-8. V UTF-8 nejsou všechny znaky reprezentovány 1 bajtem. Znaky lze reprezentovat 1 bajtem až 4 bajty.

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

Pomocí volby -b ( --bytes ) vystřihněte část řádku zadáním polohy bajtu.

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 bajtů:

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

drüb

V době psaní tohoto článku verze střihu v GNU coreutils nemá možnost střihu podle znaků. Při použití volby -c výřez chová stejně jako při použití volby -b .

Příklady řezu

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

Získejte seznam všech uživatelů

Výstup příkazu getent passwd je předán do cut který vytiskne prvního souboru s použitím : jako oddělovače.

getent passwd | cut -d ':' -f1

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

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

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

Závěr

Nyní byste měli dobře rozumět tomu, jak používat příkaz Linux cut. Přestože je příkaz cut užitečný, má některá omezení. Nepodporuje specifikaci více než jednoho znaku jako oddělovače a nepodporuje více decimetrů.

cut terminál