unix中的CUT命令全接觸

來源:互聯網
上載者:User

cut命令用於從檔案或者標準輸入中讀取內容並截取每一行的特定部分並送到標準輸出。

截取的方式有三種,一是按照字元位置,二是按照位元組位置,三是使用一個分隔字元將一行分割成多個field,並提取指定的fields。

cut命令有5個參數,其中-c,-b,-f分別表示"character", "byte"以及"field"截取方式。當採用field模式截取時,需要用"-d"參數指定一個分隔字元,分割符只能為單個字元。另外還有一個"- s",suppress,表示如果行中沒有給出的分割符則不輸出該行(預設為如果沒有分隔字元則將該行原封不動輸出)

以下為幾個例子:

  • 按字元截取:echo hello, world | cut -c 8-12 則輸出"world"(截取字串中從第8到第12個共12個字元)
  • 按分隔字元截取:echo hello, world | cut -f 2 -d " "則輸出"world"(截取以空格分割的第二部分)
  • echo Long, long ago | cut -f 2,3 -d " "則輸出" Long, ago"(截取以空格分割的第2、3部分,注意輸出的結果也以-d指定的分隔字元分割)
  • 使用"-s"安靜地忽略沒有給出地分隔字元地行:echo hello |cut -d "!" -f 1 -s則什麼也不輸出(因為行中沒有"!"字元)

如果命令執行成功則返回0,遇到錯誤則返回一個大於0的數字。

其中-c,-b,好理解,下面我自己理解的-f參數,自己多實驗幾次,多輸出幾次,就明白了。

# echo Long,long ago,ddddddd | cut -f 2 -d ,
long ago

# echo Long,long ago,ddddddd | cut -f 2- -d ,
long ago,ddddddd

# echo Long,long ago,ddddddd,hhhhhhhhhhh | cut -f 2- -d ,
long ago,ddddddd,hhhhhhhhhhh

上面三個對比一下就會很清楚。

# echo Long,long ago,ddddddd | cut -f 2,3 -d ,
long ago,ddddddd
# echo Long,long ago,ddddddd | cut -f 1,3 -d ,
Long,ddddddd
# echo Long,long ago,ddddddd | cut -f 1,2 -d ,
Long,long ago

# echo Long,long ago ddddddd | cut -f 2 -d ,
long ago ddddddd

# echo Long,long ago ddddddd | cut -f 2,3 -d ,
long ago ddddddd

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.