linux每日一命令--cut


--按文件大小排序 顯示前100行 顯示后五列

ll -Sh|head -n 100|cut -d ' ' -f 5-

 

一、基本語法
cut是一個選取命令,以行為單位,用指定分隔符將行切分為若干字段,選取所需要的字段。
1、語法格式
cut [option] files
option常用參數如下:
 

-d:用來定義分隔符,默認為tab鍵,一般與-f配合使用(如果分隔符是空格,必須是兩個單引號之間確實有一個空格,是一個哦,不是支持多個)
-f:需要選取的字段,根據-d切分的字段集選取,下標從1開始
-s:表示不包括那些不含分隔符的行,用於去掉注釋或者標題一類的信息
-c:以字符為單位進行分割,可以選取指定字符
-b:以字節為單位進行分割,可以選取指定字節,這些字節位置將忽略多字節字符邊界(比如:漢字),除非同時指定了-n參數
-n:取消分割多字節字符,只能和-b參數配合使用,即如果字符的最后一個字節落在由-b參數列表指定的范圍之內,則該字符將被選出,否則,該字符將被排除。
不難看出上面參數中,-f、-c、-b都是用來表示提取指定范圍數據的,這個范圍的表示方法如下:
 

N:只取第N項
N-:從第N項一直到行尾
N-M:從第N項到第M項(包括M項)
-M:從第一項到第M項(包括M項)
-:從第一項開始到結束的所有項
二、應用實例
1、基本用法
用-d與-f組合選取字段,這里以PATH為例說明之:
 

復制代碼 代碼示例:#echo $PATH
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/changquan.scq/bin
 
(1)選取第2個路徑:
 

復制代碼 代碼示例:#echo $PATH | cut -d: -f2
/usr/local/bin
 
(2)選取第2個開始后的所有路徑:
 

復制代碼 代碼示例:#echo $PATH | cut -d: -f2-
/usr/local/bin:/bin:/usr/bin:/home/changquan.scq/bin
 
(3)選取第2到第4個路徑,包括第4個路徑:
 

復制代碼 代碼示例:#echo $PATH | cut -d: -f2-4
/usr/local/bin:/bin:/usr/bin
 
(4)選取從第1個到第4個路徑,包括第4個路徑:
 

復制代碼 代碼示例:#echo $PATH | cut -d: -f-4
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin
 
(5)選取從第1個到最后一個路徑的所有路徑:
 

復制代碼 代碼示例:#echo $PATH | cut -d: -f-
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/changquan.scq/bin
(6)選取第1個路徑和第3個路徑:
 

復制代碼 代碼示例:#echo $PATH | cut -d: -f1,3
/usr/kerberos/bin:/bin
 
(7)選取第1到第3個路徑和第5個路徑:
 

復制代碼 代碼示例:#echo $PATH | cut -d: -f1-3,5
/usr/kerberos/bin:/usr/local/bin:/bin:/home/changquan.scq/bin
2、字符定位
這里以who為例說明之:
 

復制代碼 代碼示例:#who
changquan.scq pts/02014-05-13 16:21 (10.62.50.159)
changquan.scq pts/12014-05-13 17:53 (10.62.50.159)
changquan.scq pts/22014-05-13 18:09 (10.62.50.159)
changquan.scq pts/32014-05-13 18:34 (10.62.50.159)
changquan.scq pts/42014-05-13 18:37 (10.62.50.159)
changquan.scq pts/52014-05-13 19:08 (10.62.50.159)
 
(1)提取每一行的第3個字節:
 

復制代碼 代碼示例:#who | cut -c3
a
a
a
a
a
 
(2)提取第1個字節開始到第3個字節,包括第3個字節:
 

復制代碼 代碼示例:#who | cut -c-3
cha
cha
cha
cha   
cha
 
(3)提取第3個字節開始到結束的所有字節,包括第3個字節:
 

復制代碼 代碼示例:#who | cut -c3-
angquan.scq pts/02014-05-13 16:21 (10.62.50.159)
angquan.scq pts/12014-05-13 17:53 (10.62.50.159)
angquan.scq pts/22014-05-13 18:09 (10.62.50.159)
angquan.scq pts/32014-05-13 18:34 (10.62.50.159)
angquan.scq pts/42014-05-13 18:37 (10.62.50.159)
angquan.scq pts/52014-05-13 19:08 (10.62.50.159)
 
(4)提取整行,第3個字節不會重疊:
 

復制代碼 代碼示例:#who | cut -c-3,3-
changquan.scq pts/02014-05-13 16:21 (10.62.50.159)
changquan.scq pts/12014-05-13 17:53 (10.62.50.159)
changquan.scq pts/22014-05-13 18:09 (10.62.50.159)
changquan.scq pts/32014-05-13 18:34 (10.62.50.159)
changquan.scq pts/42014-05-13 18:37 (10.62.50.159)
changquan.scq pts/52014-05-13 19:08 (10.62.50.159)
 
(5)提取每一行的第3到第5個字節和第8個字節:
 

復制代碼 代碼示例:#who | cut -c3-5,8
anga
anga
anga
anga
anga
 
3、字節定位
依然以who為例說明之:
提取每一行的第3到第5個字節和第8個字節:
 

復制代碼 代碼示例:#who | cut -b3-5,8
anga
anga
anga
anga
anga
 
咋一看-b與-c沒什么區別,其實不然,二者在單字節字符(字母)上基本一樣,而在多字節字符(漢字)上有很大區別,這里以漢字提取為例說明之:
 

復制代碼 代碼示例:#vi test.txt
星期一
星期二
星期三
#cut -b3 test.txt
?
?
?
#cut -c3 test.txt



 
從上面的例子不難看出,-c以字符為單位輸出正常,而-b以字節為單位輸出亂碼。
當然-b在遇到多字節字符時也不是無葯可救了,還有個參數-n可以配合使用來告訴cut不要將多字節字符拆開:
 

復制代碼 代碼示例:#cut -nb 2

#cut -nb 1,2,3


 


免責聲明!

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



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