-
命令格式
cut -b list [-n] [file ...]
cut -c list [file ...]cut -f list [-d delim][-s][file ...]
上面的-b、-c、-f分別表示字節、字符、字段(即byte、character、field);list表示-b、-c、-f操作範圍,-n常常表示具體數字;
file表示的自然是要操作的文本文件的名稱;
delim(英文全寫:delimiter)表示分隔符,默認情況下爲TAB;
-s表示不包括那些不含分隔符的行(這樣有利於去掉註釋和標題)
-
常用參數
-b, --bytes=列表 只選中指定的這些字節
-c, --characters=列表 只選中指定的這些字符
-d, --delimiter=分界符 使用指定分界符代替製表符作爲區域分界
-f, --fields=列表 只選中指定的這些域;並打印所有不包含分界符的 行,除非-s 選項被指定
-n (忽略)
--complement 補全選中的字節、字符或域
-s, --only-delimited 不打印沒有包含分界符的行
--output-delimiter=字符串 使用指定的字符串作爲輸出分界符,默認採用輸入 的分界符
--help 顯示此幫助信息並退出
--version 顯示版本信息並退出
僅使用f -b, -c 或-f 中的一個。每一個列表都是專門爲一個類別作出的,或者您可以用逗號隔
開要同時顯示的不同類別。您的輸入順序將作爲讀取順序,每個僅能輸入一次。
每種參數格式表示範圍如下:
N 從第1 個開始數的第N 個字節、字符或域
N- 從第N 個開始到所在行結束的所有字符、字節或域
N-M 從第N 個開始到第M 個之間(包括第M 個)的所有字符、字節或域
-M 從第1 個開始到第M 個之間(包括第M 個)的所有字符、字節或域
當沒有文件參數,或者文件不存在時,從標準輸入讀取
-
命令說明
-
使用示例(以下內容來自liuan的博客)
- 按字節cut:
注意:一個空格算一個字節,一個漢字算三個字節
[root@localhost ~]# date
2011年08月11日 星期四20:44:52 EDT
[root@localhost ~]# date |cut -b 1-4 取前四個字節
2011
[root@localhost ~]# date |cut -b 1-6
2011
[root@localhost ~]# date |cut -b 1-7 一個漢字算三個字節
2011年
[root@localhost ~]# date |cut -b 1-10
2011年08
多個定位之間用逗號隔開:
[root@localhost ~]# date |cut -b 1-7,10
2011年8
[root@localhost ~]# date |cut -b 10,1-7 cut會先把-b後面所有的定位進行從小到大排序,然後再提取
2011年8
負號的使用:
[root@localhost ~]# date |cut -b -4
2011
[root@localhost ~]# date |cut -b 4-
1年08月11日 星期四21:05:30 EDT
[root@localhost ~]# date |cut -b -4,4-
2011年08月11日 星期四21:06:53 EDT
-4表示從第一個字節到第四個字節,而4-表示從第四個字節到行尾。這兩種情況下,都包括了第4個字節“1”。如果我執行date |cut -b -4,4-,會輸出整行,不會出現連續兩個重疊的1
-
按字符cut:
按字符cut相對比較簡單,中文字符和空格都算一個字符。
[root@localhost ~]# date |cut -c 1-5
2011年
[root@localhost ~]# date |cut -c 5,9,13
年月日
-
按域cut
以/etc/passwd文件爲例:
[root@localhost ~]# head -n5 /etc/passwd |cut -d : -f 1,3-5
root:0:0:root
bin:1:1:bin
daemon:2:2:daemon
adm:3:4:adm
lp:4:7:lp
-d指定域分隔符,-f 指定要剪出哪幾個域,這個與awk的輸出特定字段功能一樣。
-d選項的默認間隔符就是製表符,所以當你就是要使用製表符的時候,完全就可以省略-d選項,而直接用-f來取域就可以了
-
如何分的清空格和製表符?
[root@localhost ~]# cat test 這個文件各單詞間存在單個空格、製表符和多個空格
data11【單個空格 】data12 【製表符】data13
data21【多個空格】data22【單個空格】data23
data31 【單個空格 】data32 【 多個空格data33
[root@localhost ~]# sed -n l test 用sed命令可以讓製表符原形畢露~
data11 data12\tdata13$
data21 data22 data23$
data31 data32 data33$
[root@localhost ~]# cat test |cut -f 2
data13
data21 data22 data23
data31 data32 data33
[root@localhost ~]# cat test |cut -d " " -f 2 cut的間隔符只允許是一個字符
cut: the delimiter must be a single character
請嘗試執行“cut --help”來獲取更多信息。
[root@localhost ~]# cat test |cut -d " " -f 2
data12 data13 中間那個空白字符是製表符
第一個空格後面還是空格,所以輸出空格
data32 單個空格後面就是data32
- 按字節cut:
-
linux命令目錄
linux命令 cut
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.