UNIX - cut 指令

【功能】

從檔案內每行取出指定的欄位

【語法】

cut -clist [file...]
cut -flist [-dchar] [-s] [file...]

【說明】

若要對於一個檔案取出每行的特定幾個字元(用 -c 選項)或是取出特定的欄位(可使用 -f 選項,指定欄位的分隔字元),如同取出檔案垂直的某一部份,在使用時必須從 -c 、-f 選項選擇一個。

輸出的結果可由使用者在 list 引數中設定,如:'c1,2,3,4'是取出每行的第 1、2、3 及第 4 個字元,或是使用 'c1-4' 也可代表相同的功能。在這個例子中還有個更簡短的表示法是 'c-4',即是從每行的最前端到第 4 個字元('c40-' 是表示從第40個字元開始到最後一個字元為範圍)。

欄位間的預設分隔符號是以跳格字元來區別各欄位,但使用者可以使用選項 -d 指定,如 '-d:' 是以冒號 ':' 做為欄位分隔的字元。在無給予檔案名稱或是給予 '-' 字元時,是表示從標準輸入中讀取。

【選項】

選 項 說 明
-c list 每行取出的單位是字元,如 '-c1-20' 是表示每行的前 20 個字元。在整個選項 -c list 中不可有任何空白的字元。
-f list 每行取出的單位是欄位,如 -f3,5 是表示每行的第 3 欄及第 5 欄,若該行中不包含欄位分隔符號時,則會整行印出,而不加以處理。
-d char

設定欄位分隔符號,如 '-d/' 表示以除號 '/' 分隔每個欄位。若要使用空白或是對 shell 具有特殊意義的字元時,應以引號包含。

例如使用空白字元時須依下面的格式:

-d" "

-s 倘若該行無欄位分隔符號,則該行跳過不印出(原來的預設情形是將整行印出)。

【範例】

1. 將檔案中的第 40 個字元後印出:

cut -c40- personnel

無論其內容為何,該指令會將檔案 personnel 中每行的第 40 個字元開始印出。

2. 只將資料檔中的第 1、5 個欄位印出:

cut -f1,5 personnel

假設 personnel 這個檔案中各欄位已使用跳格字元分隔,則將可得到正常的結果。若遇到沒包含跳格字元的行時,會將行印出而無任何更改,或是使用者可加入 -s 選項,使沒包含分隔符號的行不印出。

網路電視    旅遊景點    算命    象棋殘局    回首頁