列印檔案中指定的欄位資料並加以計算

AWK 處理資料時, 它會自動從資料檔中一次讀取一筆記錄, 並會 將該資料切分成一個個的欄位; 程式中可使用 $1, $2,... 直接取得 各個欄位的內容. 這個特色讓使用者易於用 AWK 撰寫 reformatter 來改變資料格式. 執行如下命令 : ( $ 表UNIX命令列上的提示符號 ) awk '{ print $2, $3 * $4 }' emp.dat 執行結果如下 : 螢幕出現 : Jenny 21000 Dan 23650 Max 27170 John 27500 Linda 19950 說 明 :
  1. UNIX命令列上, 執行AWK的語法為: awk 'AWK程式' 欲處理的資料檔檔名. 本範例中的 程式部分 為 {print $2, $3 * $4}. 把程式置於命令列時, 程式之前後須以 ' 括住.
  2. emp.dat 為指定給該程式處理的資料檔檔名.
  3. 本程式中使用 : Pattern { Actions } 語法.
    PatternActions
    print $2, $3 * $4
    Pattern 部分被省略, 表無任何限制條件. 故AWK讀入每筆資料列 後都將無條件執行這個 Actions.
  4. print為AWK所提供的輸出指令, 會將資料輸出到stdout(螢幕). print 的參數間彼此以 ``{ ,}'' 隔開, 印出資料時彼此間會以空白 隔開. (參考 附錄 D 內建變數OFS)
  5. 將上述的 程式部分 儲存於檔案 pay1.awk 中. 執行命令時再指定AWK程式檔 之檔名. 這是執行AWK的另一種方式, 特別適用於程 式較大的情況, 其語法如下: $awk -f AWK程式檔名 資料檔檔名 故執行下列兩命令,將產生同樣的結果. $awk -f pay1.awk emp.dat $awk ' { print $2, $3 * $4 } ' emp.dat 讀者可使用``-f''參數,讓AWK主程式使用其它僅含 AWK函數 的 檔案中的函數 其語法如下: awk -f AWK主程式檔名 -f AWK函數檔名 資料檔檔名 (有關 AWK 中函數之宣告與使用於 7.4 中說明)
  6. AWK中也提供與 C 語言中類似用法的 printf() 函數. 使用 該函數可進一步控制資料的輸出格式. 編輯另一個AWK程式如下, 並取名為 pay2.awk { printf("\%6s Work hours: %3d Pay: %5d\", $2,\$3, $3* $4) } 執行下列命令 $awk -f pay2.awk emp.dat 執行結果螢幕出現: Jenny Work hours: 100 Pay: 21000 Dan Work hours: 110 Pay: 23650 Max Work hours: 130 Pay: 27170 John Work hours: 125 Pay: 27500 Linda Work hours: 95 Pay: 19950