linux命令 cut

  1. 命令格式

    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表示不包括那些不含分隔符的行(這樣有利於去掉註釋和標題)

  2. 常用參數

     -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 個)的所有字符、字節或域  

    當沒有文件參數,或者文件不存在時,從標準輸入讀取

  3. 命令說明

  4. 使用示例(以下內容來自liuan的博客)

    1. 按字節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

    2. 按字符cut:

      按字符cut相對比較簡單,中文字符和空格都算一個字符。

      [root@localhost ~]# date |cut -c 1-5

      2011年

      [root@localhost ~]# date |cut -c 5,9,13

      年月日

    3. 按域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來取域就可以了

    4. 如何分的清空格和製表符?

      [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

  5. linux命令目錄

發佈了36 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章