GNU/Linux >> Znalost Linux >  >> Linux

Linux Cut Command s praktickými příklady

Příkaz cut se používá v systémech Linux a Unix k vyříznutí částí a částí z každého řádku souboru a zapsání výsledku na standardní výstup. Lze jej použít k vyříznutí částí řádku podle pozice bajtu, znaku a pole (oddělovač).

V tomto tutoriálu se naučíme linuxový příkaz cut s několika praktickými příklady, které můžete použít ve svých každodenních činnostech na příkazovém řádku.

Příkaz a syntaxe Cut

Základní syntaxe příkazu cut je následující:

cut OPTION... [FILE]...

Pojďme zkontrolovat možnosti vyjmutí a bez jakékoli možnosti nebude příkaz cut fungovat.

Možnosti vyjmutí

-f :Extrahujte zadáním pole. Příkaz Vyjmout používá jako výchozí oddělovač pole 'TAB'.

-d :Výchozí oddělovač je 'Tab' a pomocí této možnosti můžete použít konkrétní oddělovač.

-b :Pro extrakci zadáním bajtu. Lze také zadat rozsah bajtů.

-c :Oříznutí podle znaků. Může to být seznam čísel oddělených čárkou nebo rozsah čísel oddělených pomlčkou (-).

–complement :Toto doplní výběr

–output-delimiter :Chcete-li změnit výstupní oddělovač, použijte volbu -output-delimiter='oddělovač'.

--only-delimited :Vyjmout nevytiskne řádky neobsahující oddělovače

Pro ilustraci našich příkladů budeme v tomto tutoriálu používat následující textový soubor s názvem 'content.txt' a soubor /etc/passwd.

$ cat content.txt 
Ubuntu Linux
Microsoft Windows
OsX El Capitan
Unix
FreeBSD

Jak oříznout pomocí oddělovače

Nejčastěji používanou možností řezu je kombinace -d a -f . V podstatě bude extrahovat obsah na základě konkrétního oddělovače a uvedených polí.

Například následující vytiskne pouze 1. pole každého řádku ze souboru '/etc/passwd' pomocí oddělovače (:).

$ cut -d':' -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
...

Následující příklad, kde jako oddělovač použijeme mezeru (" ") a vyjmeme 1. pole ze souboru s názvem 'content.txt'.

$ cut -d " " -f 1 content.txt 
Ubuntu
Microsoft
OsX
Unix
FreeBSD

Tento příklad extrahuje více než jedno pole z určitého souboru. Zde extrahujeme 1. a 6. pole pomocí oddělovače dvojtečka (:) ze souboru '/etc/passwd', který má řetězec '/bin/bash':

$ grep "/bin/bash" /etc/passwd | cut -d':' -f1,6
root:/root
slax:/home/slax

Chcete-li zobrazit rozsah polí, zadejte počáteční pole a koncové pole oddělené spojovníkem (-), jak je znázorněno níže:

$ grep "/bin/bash" /etc/passwd | cut -d':' -f1-4,6,7
root:x:0:0:/root:/bin/bash
slax:x:1000:1000:/home/slax:/bin/bash

Jak doplnit výběr výstupu

K doplnění seznamu polí výběru použijte --complement volba. Tato možnost používala tam, kde vybrat všechna pole kromě zadaných polí.

V následujícím příkladu příkaz vytiskne všechna pole kromě 2. pole v souboru from '/etc/passwd':

$ grep "/bin/bash" /etc/passwd | cut -d':' --complement -f2
root:0:0:root:/root:/bin/bash

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

Chcete-li zadat oddělovač výstupu, použijte --output-delimiter volba. Oddělovač vstupu je určen pomocí -d a výchozí oddělovač výstupu je stejný jako oddělovač vstupu.

Nejprve zkontrolujte výstup bez použití výstupního oddělovače takto:

$  cut -d: -f1,7  /etc/passwd |  sort |  uniq -u
_apt:/usr/sbin/nologin
backup:/usr/sbin/nologin
bin:/usr/sbin/nologin
daemon:/usr/sbin/nologin
dnsmasq:/usr/sbin/nologin
games:/usr/sbin/nologin
gnats:/usr/sbin/nologin
irc:/usr/sbin/nologin
landscape:/usr/sbin/nologin
list:/usr/sbin/nologin
lp:/usr/sbin/nologin
lxd:/bin/false

Nyní jsem přidal --output-delimiter možnost a oddělovač vstupu dvojtečka (:) je nahrazena výstupním oddělovačem „SPACE“ takto:

$  cut -d: -f1,7 --output-delimiter ' ' /etc/passwd |  sort |  uniq -u
_apt /usr/sbin/nologin
backup /usr/sbin/nologin
bin /usr/sbin/nologin
daemon /usr/sbin/nologin
dnsmasq /usr/sbin/nologin
games /usr/sbin/nologin
gnats /usr/sbin/nologin
irc /usr/sbin/nologin
landscape /usr/sbin/nologin
list /usr/sbin/nologin
lp /usr/sbin/nologin
lxd /bin/false

Podívejme se na další příklad, zde používáme výstupní oddělovač pro tisk na každé pole na novém řádku.

Zde používáme --output-delimiter jako $’\n’ což označuje nový řádek.

Zkontrolujte výstup:

$ grep root /etc/passwd | cut -d':' -f1,6,7 --output-delimiter=

Jak krájet podle znaků

-c (sloupec) se používá pro ořez podle pozice znaku. Pamatujte, že „TABS“ a „Mezery“ jsou také považovány za znaky.

Chcete-li vytisknout 1. znak z každého řádku ze souboru s názvem content.txt, použijte níže:

$ cut -c 1 content.txt
U
M
O
U
F

V následujícím příkladu zobrazíme znak 1 až 7 (rozsah) každého řádku ze souboru:

$ cut -c 1-7 content.txt
Ubuntu
Microso
OsX El
Unix
FreeBSD

Podívejme se, jak vybrat sloupce podle konkrétní počáteční nebo koncové pozice.

Chcete-li extrahovat sloupce od 2. znaku po poslední znak:

$ cut -c2- content.txt
buntu Linux
icrosoft Windows
sX El Capitan
nix
reeBSD

Chcete-li extrahovat sloupce od 1. do 4. znaku:

cut -c-4 content.txt
Ubun
Micr
OsX
Unix
Free

Jak krájet po bytech

Použijte -b možnost vybrat část řádku zadáním pozice bajtu čísly oddělenými čárkou (,). Pomocí pomlčky můžete určit rozsah bajtů.

Následující příklad vystřižený z 1., 2. a 3. bajtu ze souboru s názvem 'content.txt':

$ cut -b 1,2,3 content.txt 
Ubu
Mic
OsX
Uni
Fre

Můžeme také zobrazit seznam s rozsahy pomocí níže uvedeného příkazu:

$ cut -b 1-3,5-7 content.txt 
Ubutu 
Micoso
OsXEl 
Uni
FreBSD

Některé praktické příklady střihů

Cut se nejpraktičtěji používá s kombinací různých příkazů Linuxu nebo Unixu.

Chcete například extrahovat „USER“, „PID“ a „COMMAND“ pomocí příkazu ps:

 ps -L u n | tr -s " " | cut -d " " -f 2,3,14-
USER PID COMMAND
0 676 /sbin/agetty -o -p -- \u --keep-baud 115200,38400,9600 ttyS0 vt220
0 681 /sbin/agetty -o -p -- \u --noclear tty1 linux
0 23174 -bash
0 26737 ps -L u n
0 26738 tr -s
0 26739 cut -d -f 2,3,14-

Vezměme si další příklad pro extrahování „celkové“, „použité“ a „volné“ hodnoty paměti a uložení do textového souboru pomocí více příkazů:

$ free -m | tr -s ' ' | sed '/^Mem/!d' | cut -d" " -f2-4 >> memory.txt
Output
$ cat memory.txt
985 86 234

Závěr

Příkaz cut lze spojit s mnoha dalšími příkazy Linuxu nebo Unixu. Může být propojen s jedním nebo více filtry pro dodatečné zpracování textu.

Jedním z omezení příkazu vyjmout je, že nepodporuje zadání více než jednoho znaku jako oddělovače. Vícenásobné polotovary se počítají jako vícenásobné oddělovače polí a pro získání požadovaného výstupu je nutné před řezáním použít příkaz tr.

\n' root /root /bin/bash operator /root /sbin/nologin

Jak krájet podle znaků

-c (sloupec) se používá pro ořez podle pozice znaku. Pamatujte, že „TABS“ a „Mezery“ jsou také považovány za znaky.

Chcete-li vytisknout 1. znak z každého řádku ze souboru s názvem content.txt, použijte níže:

 

V následujícím příkladu zobrazíme znak 1 až 7 (rozsah) každého řádku ze souboru:

 

Podívejme se, jak vybrat sloupce podle konkrétní počáteční nebo koncové pozice.

Chcete-li extrahovat sloupce od 2. znaku po poslední znak:

 

Chcete-li extrahovat sloupce od 1. do 4. znaku:

 

Jak krájet po bytech

Použijte -b možnost vybrat část řádku zadáním pozice bajtu čísly oddělenými čárkou (,). Pomocí pomlčky můžete určit rozsah bajtů.

Následující příklad vystřižený z 1., 2. a 3. bajtu ze souboru s názvem 'content.txt':

 

Můžeme také zobrazit seznam s rozsahy pomocí níže uvedeného příkazu:

 

Některé praktické příklady střihů

Cut se nejpraktičtěji používá s kombinací různých příkazů Linuxu nebo Unixu.

Chcete například extrahovat „USER“, „PID“ a „COMMAND“ pomocí příkazu ps:

 

Vezměme si další příklad pro extrahování „celkové“, „použité“ a „volné“ hodnoty paměti a uložení do textového souboru pomocí více příkazů:

 

Závěr

Příkaz cut lze spojit s mnoha dalšími příkazy Linuxu nebo Unixu. Může být propojen s jedním nebo více filtry pro další zpracování textu.

Jedním z omezení příkazu vyjmout je, že nepodporuje zadání více než jednoho znaku jako oddělovače. Vícenásobné polotovary se počítají jako vícenásobné oddělovače polí a pro získání požadovaného výstupu je nutné před řezáním použít příkaz tr.


Linux
  1. Jak používat Linux Hexdump Command s praktickými příklady

  2. JQ Command v Linuxu s příklady

  3. Linux – sloučení /usr/bin A /usr/sbin do /bin (gnu/linux)?

  1. 10 praktických příkladů příkazu Vyjmout v Linuxu pro výběr sloupců souboru

  2. Linuxový příkaz rsync s praktickými příklady

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

  1. wc Linux Command s příklady

  2. Nainstalujte binární soubory do /bin, /sbin, /usr/bin a /usr/sbin, interakce s --prefix a DESTDIR

  3. Jaké jsou významy /usr/sbin, /usr/local/sbin a /usr/local/bin?