文章目錄
從輸入行中選取字元或者欄位
cut [options] [file-list]
cut 從輸入行中選取字元或者欄位,並將他們寫到標準輸出,字元和欄位從1開始編號
參數
file-list 是檔案的路徑名列表,如果沒有指定參數,或者使用連字號(-)來代替檔案名稱,那麼cut將從標準輸入來擷取輸入
選項
-c clist 選取由clist中的列號指定的字元。clist的值為列號(多個值用逗號分隔)或者列範圍,列範圍用兩個列號指定,
中間用連字號隔開。範圍-n表示從第1~n列。n-表示從第n列到行尾。n-m表示從第n~m列
-d dchar 將dchar作為輸入欄位的分割符,預設分隔符號為定位字元,特殊情況下可使用逸出字元
-f flist 選擇在flist中指定的欄位。flist的值為欄位號(多個值用逗號分隔)或者欄位的範圍。欄位範圍可以用兩個欄位號指定,
中間用連字號隔開。範圍-n表示從第1~n個欄位,範圍n-表示從第n個欄位到行尾,n-m表示從第n~m個欄位。預設字
段的分隔字元為定位字元,也可以使用-d選項來指定分割符
-s 僅列印包含分割符的行,如果沒有此選項,則列印不包含分割符的行
樣本
先看看原檔案
$ cat a.txt1111 2222 3333 4444 55551111 2222 3333 4444 55551111 2222 3333 4444 55551111 2222 3333 4444 5555------------------------
cut -c 列範圍
$ cut -c1-4 a.txt1111111111111111----
指定列範圍列印字元
cut -c 列號
$ cut -c1,6 a.txt12121212--
指定列號列印字元
cut -d -f
$ cut -d' ' -f1-3 a.txt1111 2222 33331111 2222 33331111 2222 33331111 2222 3333------------------------
指定分隔字元和欄位範圍列印字元,此處文字檔中預設以space作為分隔字元,最底下沒有分隔字元,所以全部列印
還可用cut -d -fn,n指定欄位號
cut -s -d -f
$ cut -s -d' ' -f1-3 a.txt1111 2222 33331111 2222 33331111 2222 33331111 2222 3333
使用-s選項列印包含分隔字元的行,最末行沒有分隔字元,所以不列印
Tips
雖然cut在功能上有所限制,但是它能較快的分割列和欄位,有時能與paste配合使用