cut命令


定義

cut是一個選取命令,選取文件中的指定字符,主要有如下用途

(1)文件內容查看

(2)顯示行中的指定部分,刪除文件中指定字段

(3)顯示文件的指定內容。

 

語法格式

cut  [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file]

使用說明
cut 命令從文件的每一行剪切字節、字符和字段並將這些字節、字符和字段寫至標准輸出。
如果不指定 File 參數,cut 命令將讀取標准輸入。必須指定 -b、-c 或 -f 標志之一。

第一,字節(bytes),用選項-b

第二,字符(characters),用選項-c

第三,域(fields),用選項-f

 

主要參數
-b :以字節為單位進行分割。這些字節位置將忽略多字節字符邊界,除非也指定了 -n 標志。
-c :以字符為單位進行分割。
-d :自定義分隔符,默認為制表符。
-f  :與-d一起使用,指定顯示哪個區域。
-n :取消分割多字節字符。僅和 -b 標志一起使用。如果字符的最后一個字節落在由 -b 標志的 List 參數指示的<br />范圍之內,該字符將被寫出;否則,該字符將被排除。

 

使用指南

按字節,字符,域 切割舉例

(1) 以“字節”定位

簡單取字節
[centos@s203 ~]$ ll
total 524
drwxrwxr-x. 12 centos centos    150 Jan 26 17:17 anaconda3
drwxrwxr-x.  4 centos centos     37 Oct 11  2018 ha
drwxrwxr-x.  4 centos centos     37 Jul 22  2018 hadoop
drwxrwxr-x.  3 centos centos     18 Nov  2  2018 kafka
drwxrwxr-x.  2 centos centos     19 Aug 23  2018 log
drwxrwxr-x.  2 centos centos     21 Aug 24  2018 logs
drwxrwxr-x.  3 centos centos     56 Apr  5 01:03 zookeeper
-rw-rw-r--.  1 centos centos 534884 Apr  5 01:03 zookeeper.out

按字節切割:

[centos@s203 ~]$ ll |cut -b 3
t
w
w
w
w
w
w
w
w

“字節”定位中,取多字節字節(- 和,)

  -b支持形如3-5的寫法,而且多個定位之間用逗號隔開

[centos@s203 ~]$ cat test.sh
No Name Mark Percent
tom 69 91
jack 71 87
alex 68 98
[centos@s203 ~]$ cut  -b 2-4,8 test.sh
o N
om 9
ack
lex

但有一點要注意,cut命令如果使用了-b選項,那么執行此命令時,cut會先把-b后面所有的定位進行從索引小到大排序,然后再提取。所以顛倒順序提取數據的方式不可行。

[centos@s203 ~]$ cut  -b 8,2-4 test.sh
o N
om 9
ack
lex

擴展 -num num-

[centos@s203 ~]$ cut  -b -4 test.sh
No N
tom
jack
alex
[centos@s203 ~]$ cut  -b 4- test.sh
Name Mark Percent
 69 91
k 71 87
x 68 98

不會重疊

[centos@s203 ~]$ cat test.sh
No Name Mark Percent
tom 69 91
jack 71 87
alex 68 98
[centos@s203 ~]$ cut  -b 4-,-4 test.sh
No Name Mark Percent
tom 69 91
jack 71 87
alex 68 98
[centos@s203 ~]$ cut  -b 4-8,3-7 test.sh
 Name
m 69 9
ck 71
ex 68

(2)以字符為定位

對單字節字符沒有什么不同,對多字節字符的影響比較大。

[centos@s203 ~]$ cat test.sh

[centos@s203 ~]$ cut -b 4-,-4 test.sh
No Name Mark Percent
王 69 91
找 71 87
李 68 98

[centos@s203 ~]$ cut  -b 1 test1.sh
N
▒
▒
▒

[centos@s203 ~]$ cut  -c 1 test1.sh
N
王
找
李

 可以使用-n選項,-n用於告訴cut -b 不要將多字節字符拆開

[centos@s203 ~]$ cut  -nb 1 test1.sh
N
王
找
李

(3)以域為定位

-b和-c只能在固定格式的文檔中提取信息,而對於非固定格式的信息則束手無策

 3.1cut的-d選項的默認間隔符就是制表符,所以當你就是要使用制表符的時候,完全就可以省略-d選項,而直接用-f來取域
[centos@s203 ~]$ cat -n  test2.sh
     169      91
     271      87
     368      98
     
[centos@s203 ~]$ cat -T test2.sh^I69^I91
找^I71^I87
李^I68^I98

[centos@s203 ~]$ cut -f 2 test2.sh
69
71
68

3.2 -d后面設置一個空格和字符,可不許設置多個空格或字符,因為cut只允許間隔符是一個字符

[centos@s203 ~]$ cat test.sh
No Name Mark Percent
tom 69 91
jack 71 87
alex 68 98
[centos@s203 ~]$ cut -d ' ' -f 2 test.sh
Name
69
71
68
[centos@s203 ~]$ cut -d 'xx' -f 2 test.sh
cut: the delimiter must be a single character

cut有哪些缺陷就是在處理多空格時。

3.3觀察指定分隔符和多字段取數

[centos@s203 ~]$ cat test3.sh
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[centos@s203
~]$ cut -d ':' -f 3-5,7 test3.sh 0:0:root:/bin/bash 1:1:bin:/sbin/nologin 2:2:daemon:/sbin/nologin 3:4:adm:/sbin/nologin 4:7:lp:/sbin/nologin

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM