Příkaz cut v systému UNIX je příkaz k vyříznutí oddílů z každého řádku souborů a zápisu výsledku na standardní výstup. Lze jej použít k řezání částí řádku podle pozice bajtu, znaku a pole. Příkaz cut v zásadě krájí čáru a extrahuje text. Je nutné specifikovat volbu příkazem, jinak dává chybu. Pokud je zadán více než jeden název souboru, potom data z každého souboru nepředcházejí jeho názvem.
Syntaxe:
cut OPTION... ...
Vezměme si dva soubory, které mají název state.txt a capital.txt obsahuje 5 názvů indických států a velká písmena.
$ cat state.txtAndhra PradeshArunachal PradeshAssamBiharChhattisgarh
Bez zadané možnosti zobrazí chybu.
$ cut state.txtcut: you must specify a list of bytes, characters, or fieldsTry "cut --help" for more information.
Možnosti a jejich popis s příklady:
1. -b (byte): Chcete-li extrahovat konkrétní bajty, musíte následovat volbu -b se seznamem čísel bytů oddělených čárkou. Rozsah bajtů lze také určit pomocí pomlčky (-). Je nutné specifikovat seznam čísel bytů, jinak by došlo k chybě. S kartami a mezerami se zachází jako se znakem o velikosti 1 bajt.
Používá speciální formulář pro výběr bajtů od začátku až do konce řádku:
In this, 1- indicate from 1st byte to end byte of a line$ cut -b 1- state.txtAndhra PradeshArunachal PradeshAssamBiharChhattisgarhIn this, -3 indicate from 1st byte to 3rd byte of a line$ cut -b -3 state.txtAndAruAssBihChh
2. -c (sloupec): Chcete-li oříznout znak, použijte volbu -c. Tím se vyberou znaky dané možnosti -c. Může to být seznam čísel oddělených čárkou nebo rozsah čísel oddělených pomlčkou (-). Karty a mezery jsou považovány za znak. Je nutné specifikovat seznam čísel znaků, jinak by při této volbě došlo k chybě.
Syntaxe:
$cut -c filename
Zde k označuje počáteční pozice znaku an označuje koncovou pozici znaku v každém řádku, pokud jsou k a n odděleny znakem „-“, jinak se jedná pouze o pozici znaku v každém řádku ze souboru, který je považován za vstup.
$ cut -c 2,5,7 state.txtnrrahsmirhti
Příkaz Výše uvedený vytiskne druhý, pátý a sedmý znak z každého řádku souboru.
$ cut -c 1-7 state.txtAndhraArunachAssamBiharChhatti
Příkaz Above cut vytiskne prvních sedm znaků každého řádku ze souboru.
Cut používá speciální formulář pro výběr znaků od začátku až do konce řádku:
$ cut -c 1- state.txtAndhra PradeshArunachal PradeshAssamBiharChhattisgarhAbove command prints starting from first character to end. Here in command only startingposition is specified and the ending position is omitted.$ cut -c -5 state.txtAndhrArunaAssamBiharChhatAbove command prints starting position to the fifth character. Here the starting positionis omitted and the ending position is specified.
3. -f (pole): -c volba je užitečná pro řádky s pevnou délkou. Většina souborů unix nemá pevné- řádky délky. Chcete-li extrahovat užitečné informace, musíte je vyjmout podle polí, nikoli podle sloupců. Seznam čísel specifikovaných polí fied musí být odděleny čárkou. Rozsahy nejsou popsány s volbou -f. cut používá tabulátor jako výchozí oddělovač polí, ale může také pracovat s jiným oddělovačem pomocí volby -d.
Poznámka: V systému UNIX se mezera nepovažuje za oddělovač.
Syntaxe:
$cut -d "delimiter" -f (field number) file.txt
Stejně jako v souboru state.txt pole jsou oddělena mezerou, pokud není použita volba -d, pak vytiskne celý řádek:
$ cut -f 1 state.txtAndhra PradeshArunachal PradeshAssamBiharChhattisgarh
Pokud je použita volba -d, pak se prostor považoval za oddělovač nebo oddělovač pole:
$ cut -d " " -f 1 state.txtAndhraArunachalAssamBiharChhattisgarh
Command prints field from first to fourth of each line from the file.Command:$ cut -d " " -f 1-4 state.txtOutput:Andhra PradeshArunachal PradeshAssamBiharChhattisgarh
4. –Komplement: Jak název napovídá, doplňuje výstup. Tuto možnost lze použít v kombinaci s dalšími možnostmi buď s -f nebo s -c.
5. –Output-delimiter: Ve výchozím nastavení je výstupní oddělovač stejný jako oddělovač vstupu, který zadáme ve volbě cut with -d. Chcete-li změnit oddělovač výstupu, použijte volbu –output-delimiter = ”delimiter”.
$ cut -d " " -f 1,2 state.txt --output-delimiter="%"Andhra%PradeshArunachal%PradeshAssamBiharChhattisgarh
Zde příkaz cut změní oddělovač (%) ve standardním výstupu mezi pole, která se zadávají pomocí volby -f.
6. –Version: Tato možnost se používá k zobrazení verze řezu, která je aktuálně spuštěna ve vašem systému.
$ cut --versioncut (GNU coreutils) 8.26Packaged by Cygwin (8.26-2)Copyright (C) 2016 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later .This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law.Written by David M. Ihnat, David MacKenzie, and Jim Meyering.
Aplikace příkazu Cut
1. Jak používat ocas s rourami (|): Příkaz cut lze spárovat s mnoha dalšími příkazy unixu. V následujícím příkladu je výstup příkazu cat uveden jako vstup do příkazu cut s volbou -f pro seřazení názvů stavů pocházejících ze souboru state.txt v opačném pořadí.
$ cat state.txt | cut -d " " -f 1 | sort -rChhattisgarhBiharAssamArunachalAndhra
Lze jej také zpracovat jedním nebo více filtry pro další zpracování. Stejně jako v následujícím příkladu používáme příkaz cat, head and cut, jehož výstup je uložen v názvu souboru list.txt pomocí direktivy (>).
$ cat state.txt | head -n 3 | cut -d " " -f 1 > list.txt$ cat list.txtAndhraArunachalAssam
Děkujeme Saloni Gupta za poskytnutí dalších příkladů.