從輸入行中選取字符或者字段
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.txt 1111 2222 3333 4444 5555 1111 2222 3333 4444 5555 1111 2222 3333 4444 5555 1111 2222 3333 4444 5555 ------------------------
cut -c 列范圍
$ cut -c1-4 a.txt 1111 1111 1111 1111 ----
指定列范圍打印字符
cut -c 列號
$ cut -c1,6 a.txt 12 12 12 12 --
指定列號打印字符
cut -d -f
$ cut -d' ' -f1-3 a.txt 1111 2222 3333 1111 2222 3333 1111 2222 3333 1111 2222 3333 ------------------------
指定分隔符和字段范圍打印字符,此處文本文件中默認以space作為分隔符,最底下沒有分隔符,所以全部打印
還可用cut -d -fn,n指定字段號
cut -s -d -f
$ cut -s -d' ' -f1-3 a.txt 1111 2222 3333 1111 2222 3333 1111 2222 3333 1111 2222 3333
使用-s選項打印包含分隔符的行,最末行沒有分隔符,所以不打印
Tips
雖然cut在功能上有所限制,但是它能較快的分割列和字段,有時能與paste配合使用