Příkaz Linux `cut` je jedním z užitečných příkazů pro práci s daty řetězce a obsahem souboru. Používá se hlavně pro řezání obsahu z tabulkových dat nebo souboru CSV. Každý řádek souboru lze rozdělit na plátky a požadovaná data lze snadno načíst pomocí příkazu „cut“. Lze jej také použít k ořezání textu oddělovačem nebo pozicí znaků nebo bajtů. Tento příkaz má mnoho možností, jak různými způsoby vyjmout data z textu nebo souboru. Jak lze použít příkaz cut s různými možnostmi, je v tomto kurzu ukázáno na různých příkladech.
Syntaxe:
Pro příkaz `cut` je povinné použít hodnotu OPTION a název SOUBORU je volitelný. Pokud v příkazu vynecháte název souboru, bude to brát data ze standardního vstupu. Pokud ale vynecháte hodnotu OPTION v příkazu cut, vygeneruje se chyba.
Možnosti:
Značka možnosti | Popis |
-b nebo –byte = LIST | Vyberte konkrétní bajty. |
-c nebo –character = LIST | Vyberte konkrétní znaky. |
-d nebo –delimiter = DELIM | Vyberte hodnotu DELIM jako oddělovač. Ve výchozím nastavení je oddělovač TAB. |
-f nebo –fields = LIST | Vyberte konkrétní pole |
–complement | Použijte k doplnění výstup |
-s nebo –only-delimited | Vynechat řádky, které neobsahují oddělovač. |
–output-delimiter = STRING | Jako oddělovač výstupu použijte hodnotu STRING. |
-z nebo –zero-terminated | Jako oddělovač řádků použijte NULL. |
Příklad 1 : Vyjmout o bajty
Následující příkaz vyjmout rozdělí standardní vstupní data na základě definovaných bajtů. Zde jsou 3,4,5 a 6 definovány jako bajty. Výstup bude generován na základě standardního vstupu. Stisknutím klávesy CTRL + D ukončete příkaz.
Výstup:
Zde je vstup „Líbí se mi programování“ a výstup je „jako“ na základě uvedených bajtů.
Vytvořte textový soubor s názvem „productlist.txt“ s následujícím obsahem pro použití příkazu „cut“. Pomocí TAB oddělte pole obsahu souboru.
01 Pero $ 2
02 Tužka $ 1,5
03 Guma $ 1
Spuštěním následujícího příkazu načtete pouze ID produktu. Zde jsou bajty uvedeny jako rozsah „1–2“ pro oříznutí dat.
Výstup:
Příklad-2: Řez podle znaků
Stejný výstup můžete vygenerovat pomocí volby -c, ty jsou uvedeny v předchozích příkladech. Mezi výstupem -b a – c možnosti příkazu cut. Spuštěním následujícího příkazu zobrazte použití volby -c. Zde se jako volitelná hodnota používá 4, která vystřihne z pozice 4 na všechny zbývající znaky každého řádku. Můžete také použít záporné znaménko před hodnotou jako -4, poté se odřízne od začátku do 4 pozic.
Výstup:
První tři znaky jsou ve výstupu vynechány.
Příklad 3: Vyjmout oddělovačem a poli
Vytvořte soubor CSV s názvem ‚students.csv‘ s následujícím obsahem, který ukáže použití oddělovače.
1002, Micheal, EEE, 3,99
1003, Asraful Haque, BBA, 3,85
1004, Momotaj Khan, anglicky, 3.20
Spuštěním následujícího příkazu vytisknete jméno studenta a CGPA ze souboru students.csv. Podle obsahu souboru obsahuje 2. a 4. pole jméno studenta a CGPA. V tomto příkazu se tedy k zobrazení výstupu používají dvě možnosti. Jedním z nich je oddělovač, -d, což je ‚,‘ zde a dalším je možnost pole, -f.
Výstup:
Pokud chcete vytiskněte dva nebo více po sobě jdoucích sloupců libovolných tabulkových dat nebo souboru CSV, pak můžete definovat pole jako rozsah. Rozsah hodnoty pole je použit v následujícím příkazu. Zde se všechna pole od 2 do 4 vytisknou jako výstup.
Výstup:
Příklad 4: Vyjmout doplňkem
– volba doplňku se používá ke generování opačného výstupu příkazu . V následujícím příkazu je použit soubor productlist.txt, který je vytvořen v prvním příkladu. Zde volba -f ořízne první pole a volba –-komplement vytiskne ostatní všechna pole souboru vynecháním prvního pole.
$ cut –complement -f 1 productlist.txt
Výstup:
Příklad 5: Vyjmout oddělovačem výstupu
Tato možnost se používá ke generování výstupu pomocí konkrétního oddělovače. Dříve vytvořený soubor students.csv se použije v následujícím příkazu. „,“ Je výchozí oddělovač jakéhokoli souboru CSV. Následující příkaz používá jako hodnotu oddělovače „:“.
$ cut -d „,“ -f 1- 3 students.csv –output-delimiter = „:“
Výstup:
Po provedení příkazu bude vstupní oddělovač ‚,‘ nahrazen oddělovačem výstupu ‚:‘ a první tři pole se vytisknou oddělením ‚:‘.
Příklad 6: Použití řezu s příkaz potrubí
Příkaz Vyjmout může převzít vstup z libovolného souboru nebo ze vstupu uživatele. Ale vstupní text lze poslat do cut příkazu pomocí kanálu. Následující příkaz ukazuje použití příkazu cut s trubkou. Zde příkaz echo zadá vstupní text pro příkaz cut a příkaz cut ořízne pole 2 a 3 na základě oddělovače.
Výstup:
Příklad -7: Uložit výstup příkazu cut do souboru
Pokud chcete, můžete výstup příkazu cut také uložit do libovolného textového souboru. Následující příkaz převezme obsah souboru students.csv jako vstup, vystřihne druhé pole na základě oddělovače a vytiskne výstup do textového souboru s názvem ‚student_names.txt‘.
Výstup:
Závěr:
Nejběžnější použití příkazu cut se v tomto kurzu pokusíme vysvětlit pomocí výše uvedeného příklady. Doufám, že použití příkazu cut bude čtenářům po provedení výše uvedených příkladů vymazáno.