cut 指令

用途

協助分割檔案行。

語法

-b 清單 -n ] |  -c 清單 -f 清單 -s ] [  -d 字元 ] } [ 檔案 ... ]

說明

cut 指令會從檔案的每一行剪下位元組、字元或欄位,並將這些位元組、字元或欄位寫入標準輸出。 如果您沒有指定 File 參數, cut 指令會讀取標準輸入。

您必須指定 -b-c、 或 -f 旗標。 List 參數是以逗點區隔、以空白區隔或以連字號區隔的整數清單 (以遞增順序)。 連字號分隔字元表示範圍。 下列項目是可能參照位元組、字元或欄位的部分範例 List 參數:

1,4,7
1-3,8
-5,10
3-

其中-5是第一個至第五個及的簡短格式3-是第三個到最後一個的簡短形式。

如果在欄位上使用 cut 指令,則 List 參數指定的欄位長度可能會因欄位和行間的不同而有所不同。 欄位定界字元的位置 (例如定位點字元) 決定欄位的長度。

您也可以使用 grep 指令對檔案進行水平剪下,並使用 paste 指令將檔案放回一起。 若要變更檔案中的直欄順序,請使用 cutpaste 指令。

旗標

項目 說明
-b 清單 指定位元組位置。 除非同時指定 -n 旗標,否則這些位元組位置會忽略多位元組字元界限。
-c 清單 指定字元位置。 例如,如果您指定-c 1-72,cut 指令會寫出檔案每一行中的前 72 個字元。
-d 字元 當您指定 -f 旗標時,使用 Character 變數指定的字元作為欄位定界字元。 您必須以引號括住對 shell 具有特殊意義的字元,例如空格字元。
-f 清單 指定在檔案中假設要以定界字元區隔的欄位清單,依預設是定位點字元。 例如,如果您指定-f 1,7,cut 指令只會寫出每一行的第一和第七個欄位。 如果某行沒有包含任何欄位定界字元,除非您指定 -s 旗標,否則 cut 指令會完整傳遞它們 (適用於表格次標題)。
-n 暫停分割多位元組字元。 僅與 -b 旗標一起使用。 如果字元的最後一個位元組落在 -b 旗標的 List 變數所表示的範圍內,則會寫入該字元; 否則會排除該字元。
-s 抑制不包含定界字元的行。 僅與 -f 旗標一起使用。

結束狀態

這個指令會傳回下列結束值:

項目 說明
0 已順利輸出所有輸入檔。
> 0 發生一個錯誤。

範例

  1. 若要顯示檔案每一行的數個欄位,請輸入:
    cut  -f 1,5 -d : /etc/passwd
    此動作會把系統密碼檔案的登入名稱和完整的使用者名稱欄位顯示出來。 這些是第一個和第五個欄位 (-f 1,5) 以冒號區隔 (-d :).

    例如,如果 /etc/passwd 檔案看起來如下:

    su:*:0:0:User with special privileges:/:/usr/bin/sh
    daemon:*:1:1::/etc:
    bin:*:2:2::/usr/bin:
    sys:*:3:3::/usr/src:
    adm:*:4:4:System Administrator:/var/adm:/usr/bin/sh
    pierre:*:200:200:Pierre Harper:/home/pierre:/usr/bin/sh
    joan:*:202:200:Joan Brown:/home/joan:/usr/bin/sh
    cut 指令會產生:
    su:User with special privileges
    daemon:
    bin:
    sys:
    adm:System Administrator
    pierre:Pierre Harper
    joan:Joan Brown
  2. 若要使用空白區隔清單來顯示欄位,請輸入:
    cut -f "1 2 3" -d : /etc/passwd
    cut 指令會產生:
    su:*:0
    daemon:*:1
    bin:*:2
    sys:*:3
    adm:*:4
    pierre:*:200
    joan:*:202

檔案

項目 說明
/usr/bin/cut 包含 cut 指令。