自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux cut 命令詳解

系統(tǒng) Linux
cut 命令在Linux和Unix中的作用是從文件中的每一行中截取出一些部分,并輸出到標(biāo)準(zhǔn)輸出中。我們可以使用 cut 命令從一行字符串中于以字節(jié),字符,字段(分隔符)等單位截取一部分內(nèi)容出來(lái)。

[[334204]]

cut 命令在Linux和Unix中的作用是從文件中的每一行中截取出一些部分,并輸出到標(biāo)準(zhǔn)輸出中。我們可以使用 cut 命令從一行字符串中于以字節(jié),字符,字段(分隔符)等單位截取一部分內(nèi)容出來(lái)。

在本文中,我們通過(guò)一些例子來(lái)了解 cut 命令的使用,這些使用方法在我們的日常工作中也是非常常用的。

Cut 命令和語(yǔ)法

cut 命令的基本語(yǔ)法如下:

  1. $ cut OPTION... [FILE]... 

我們先來(lái)了解一下 cut 的一些選項(xiàng),cut 命令必須要指定選項(xiàng)才能執(zhí)行。

-f : 提取指定的字段,cut 命令使用 Tab 作為默認(rèn)的分隔符。

-d : Tab 是默認(rèn)的分隔符,使用這一選項(xiàng)可以指定自己的分隔符。

-b : 提取指定的字節(jié),也可以指定一個(gè)范圍。

-c : 提取指定的字符,可以是以逗號(hào)分隔的數(shù)字的列表,也可以是以連字符分隔的數(shù)字的范圍。

–complement : 補(bǔ)充選中的部分,即反選。

–output-delimiter : 修改輸出時(shí)使用的分隔符。

--only-delimited : 不輸出不包含分隔符的列。

我們以如下的名為 context.txt 的文本文件和 /etc/passwd 文件來(lái)為例來(lái)進(jìn)行說(shuō)明。

  1. $ cat content.txt  
  2. Ubuntu Linux 
  3. Microsoft Windows 
  4. OsX El Capitan 
  5. Unix 
  6. FreeBSD 

如何指定分隔符

最常用的選項(xiàng)是 -d 和 -f 的組合,這會(huì)根據(jù) -d 指定的分隔符和 -f 列出的字段來(lái)提取內(nèi)容。

例如在這個(gè)例子中只打印出 /etc/passwd 文件每一行的第一個(gè)字段,用的分隔符是 :

  1. $ cut -d':' -f1 /etc/passwd 
  2. root 
  3. bin 
  4. daemon 
  5. adm 
  6. lp 
  7. sync 
  8. shutdown 
  9. halt 
  10. mail 
  11. operator 
  12. games 
  13. alvin 
  14. liangxu 
  15. ... 

在下面這個(gè)例子中我們用空格作為分隔符打印 content.txt 文件的第一個(gè)字段

  1. $ cut -d " " -f 1 content.txt  
  2. Ubuntu 
  3. Microsoft 
  4. OsX 
  5. Unix 
  6. FreeBSD 

在下面這個(gè)例子中我們提取了多個(gè)字段。這里,我們使用冒號(hào)(:)分隔符從文件 /etc/passwd 中包含字符串 /bin/bash 的行提取第一和第六個(gè)字段。

  1. $ grep "/bin/bash" /etc/passwd | cut -d':' -f1,6 
  2. root:/root 
  3. alvin:/home/alvin 

要顯示字段的某個(gè)范圍,可以指定開(kāi)始和結(jié)束的字段,中間用連字符(-)連接,如下所示:

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

如何補(bǔ)全選擇的輸出

要補(bǔ)全選擇輸出的字段(即反選),使用 --complement 選項(xiàng)。這一選項(xiàng)輸出所有的字段,除了指定的字段。

在下面這個(gè)例子中輸出 /etc/passwd 文件中包含 /bin/bash 的行中除了第二個(gè)字段以外的所有字段

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

如何指定輸出的分隔符

使用 --output-delimiter 可以指定輸出的分隔符。輸入的分隔符由 -d 來(lái)指定,而輸出分隔符和輸入分隔符默認(rèn)是一樣的。

我們先以下面的例子來(lái)測(cè)試不指定輸出分隔符時(shí)的輸出;

  1. $  cut -d: -f1,7  /etc/passwd |  sort |  uniq -u 
  2. _apt:/usr/sbin/nologin 
  3. backup:/usr/sbin/nologin 
  4. bin:/usr/sbin/nologin 
  5. daemon:/usr/sbin/nologin 
  6. dnsmasq:/usr/sbin/nologin 
  7. games:/usr/sbin/nologin 
  8. gnats:/usr/sbin/nologin 
  9. irc:/usr/sbin/nologin 
  10. landscape:/usr/sbin/nologin 
  11. list:/usr/sbin/nologin 
  12. lp:/usr/sbin/nologin 
  13. lxd:/bin/false 

現(xiàn)在我們加上--output-delimiter選項(xiàng),將輸出分隔符指定為空格:

  1. $  cut -d: -f1,7 --output-delimiter ' ' /etc/passwd |  sort |  uniq -u 
  2. _apt /usr/sbin/nologin 
  3. backup /usr/sbin/nologin 
  4. bin /usr/sbin/nologin 
  5. daemon /usr/sbin/nologin 
  6. dnsmasq /usr/sbin/nologin 
  7. games /usr/sbin/nologin 
  8. gnats /usr/sbin/nologin 
  9. irc /usr/sbin/nologin 
  10. landscape /usr/sbin/nologin 
  11. list /usr/sbin/nologin 
  12. lp /usr/sbin/nologin 
  13. lxd /bin/false 

我們?cè)贉y(cè)試一個(gè)例子,用分隔符讓每一行打印一個(gè)字段。

我們將 --output-delimiter 指定為 $'\n' 表?yè)Q行。

輸出結(jié)果為:

  1. $ grep root /etc/passwd | cut -d':' -f1,6,7 --output-delimiter=$'\n' 
  2. root 
  3. /root 
  4. /bin/bash 
  5. operator 
  6. /root 
  7. /sbin/nologin 

如何以字符的方式提取內(nèi)容

-c選項(xiàng)可以用來(lái)根據(jù)字符位置進(jìn)行提取,注意空格和Tab也以字符來(lái)處理。

打印 context.txt 文件每一行的第一個(gè)字符,如下:

  1. $ cut -c 1 content.txt 

下面顯示了 context.txt 文件每一行的第一至七個(gè)字符;

  1. $ cut -c 1-7 content.txt 
  2. Ubuntu 
  3. Microso 
  4. OsX El 
  5. Unix 
  6. FreeBSD 

我們?cè)贉y(cè)試一下只指定開(kāi)始或結(jié)束的位置。

下面提取第二個(gè)到最后一個(gè)字符:

  1. $ cut -c2- content.txt 
  2. buntu Linux 
  3. icrosoft Windows 
  4. sX El Capitan 
  5. nix 
  6. reeBSD 

提取第一到第四個(gè)字符:

  1. cut -c-4 content.txt 
  2. Ubun 
  3. Micr 
  4. OsX 
  5. Unix 
  6. Free 

如何根據(jù)字節(jié)提取

使用-b選項(xiàng)通過(guò)指定字節(jié)的位置來(lái)選擇一行的某一部分,使用逗號(hào)分隔每個(gè)指定位置,或用連字符 - 指定一個(gè)范圍。

下面這個(gè)例子提取 content.txt 文件每一行的第一,二,三個(gè)字節(jié):

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

我們也可以用如下命令列出一個(gè)范圍;

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

一些實(shí)用的例子

cut 是一個(gè)實(shí)用的命令,常常和其他Linux或Unix命令結(jié)合使用 。

例如如果你想提取 ps 命令中的 USER,PID和COMMAND:

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

再測(cè)試一個(gè)例子,提取內(nèi)存的 total,used和free值,并保存到一個(gè)文件中。

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

總結(jié)

cut 命令可以和很多其他Linux或Unix命令通過(guò)管道連接??梢酝ㄟ^(guò)管道傳遞一個(gè)或多個(gè)過(guò)濾器進(jìn)行額外的文本處理。

cut 命令的局限性之一是它不支持指定多個(gè)字符作為分隔符。多個(gè)空格會(huì)被計(jì)算為多個(gè)字段分隔符,因此必須在 cut 命令前使用 tr 命令才能獲得需要的輸出。

 

責(zé)任編輯:武曉燕 來(lái)源: 良許Linux
相關(guān)推薦

2023-12-21 13:59:41

2020-04-21 16:13:29

LinuxCut命令Unix系統(tǒng)

2014-07-24 11:37:54

LinuxTop命令

2022-09-01 12:17:43

SCSI協(xié)議Linux

2021-04-14 16:06:42

Linuxchattr命令

2017-03-10 15:25:35

Linuxnetstat命令

2020-08-13 07:38:41

Linux screen命令

2012-05-10 08:46:05

Linuxsort命令

2012-05-11 10:07:55

Linuxfind

2012-05-10 08:37:54

Linuxxargs

2018-08-06 08:51:32

Linux命令cut

2009-07-31 16:14:27

linux cd命令Linux基本命令

2012-05-10 08:55:11

Linuxuniq

2009-11-11 10:24:10

linuxecho命令詳解

2010-06-23 10:03:18

Linux Bash命

2010-05-25 14:32:09

Linux tcpdu

2009-12-25 14:03:46

Linux vi

2010-06-22 10:28:04

linux at命令

2021-01-14 07:53:09

Linuxlsof 命令

2009-08-03 09:20:18

find命令詳解find命令linux find命
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)