首先再說一說awk的工作流程還是有必要的 :
執行awk時, 它會反復進行下列四步驟.
1. 自動從指定的數據文件中讀取一個數據行.
2. 自動更新(Update)相關的內建變量之值. 如 : NF, NR, $0...
3. 依次執行程序中所有 的 Pattern { Actions } 指令.
4. 當執行完程序中所有 Pattern { Actions } 時, 若數據文件中
還有未讀取的數據, 則反復執行步驟1到步驟4.awk會自動重復進行上述4個步驟, 使用者不須于程序中編寫這個循環(Loop).
1. 程序元素
一個awk 程序是一對以模式(pattern) 與大括號框起來的操作(action) 組合而成的,或許,還會加上實現操作細節的函數(function ) 。針對每個匹配于輸人數據的模式,操作會被執行,且所有模式都會針對每條輸人記錄而檢查。模式或操作可省略其中一個。如果模式省略,則操作將被應用到每條輸人記錄; 如果操作省略,則默認操作為打印匹配之記錄在標準輸出上。以下是傳統awk 程序的配置:
pattern {action} 如模式匹配,則執行操作
pattern {action} 如模式匹配,則打印記錄
雖然,模式多半是數字或字符串表達式,不過awk 以保留字BEGIN 與END 提供兩種特殊模式。
與BEG 工N 關聯的操作只會執行一次,在任何命令行文件或一般命令行賦值被處理之前,但是在任何開頭的一V 選項指定已經完成之后。
END 操作也是只執行一次,用于所有輸入數據已被處理完之后。它多半用于產生摘要報告,或是執行清除操作。
BEGIN 與END 模式可以是任意順序,可以存在于awk 程序內的任何位置。不過,為了方便,我們