1、迴圈語句:
awk中的迴圈語句同樣借鑒於C語言,支援while、do/while、for、break、continue,這些關鍵字的語義和C語言中的語義完全相同。
2、流程式控制制語句:
next語句是從檔案中讀取下一行,然後從頭開始執行awk指令碼。
exit語句用於結束awk程式。它終止對記錄的處理。但是不會略過END模組,如果exit()語句被賦值0--255之間的參數,如exit(1),這個參數就被列印到命令列,以判斷退出成功還是失敗。
3、重新導向
/> awk '$4 >= 70 {print $1,$2 > "passing_file"}' filename #注意這裡的檔案名稱需要用雙引號括起來。
4、輸入重新導向
awk中對於輸入重新導向是通過getline函數來完成的。getline函數的作用是從標準輸入、管道或者當前正在處理的檔案之外的其他輸入檔案獲得 輸入。他負責從輸入獲得下一行的內容,並給NF、NR和FNR等內建變數賦值。如果得到一個記錄,getline就返回1,如果達到檔案末尾就返回0。如 果出現錯誤,如開啟檔案失敗,就返回-1。
/> awk 'BEGIN { "date" | getline d; print d}'
Tue Nov 15 15:31:42 CST 2011
上例中的BEGIN動作模組中,先執行shell命令date,並通過管道輸出給getline,然後再把輸出賦值給自訂變數d並列印輸出它。
/> awk 'BEGIN { "date" | getline d; split(d,mon); print mon[2]}'
Nov
上例中date命令通過管道輸出給getline並賦值給d變數,再通過內建函數split將d拆分為mon數組,最後print出mon數組的第二個元素。
5、關閉管道
由於awk中同時開啟的管道只有一個,那麼在開啟下一個管道之前必須關閉它,管道符號右邊可以通過可以通過雙引號關閉管道。如果不關閉,它將始終保持開啟狀態,直到awk退出。
/> awk {print $1,$2,$3 | "sort -4 +1 -2 +0 -1"} END {close("sort -4 +1 -2 +0 -1") } filename
上例中END模組中的close顯示關閉了sort的管道,需要注意的是close中關閉的命令必須和當初開啟時的完全符合,否則END模組產生的輸出會和以前的輸出一起被sort分類。
6、初始設定變數
awk在動作部分還提供了BEGIN塊和END塊。其中BEGIN動作塊在awk處理任何輸入檔案行之前執行。事實上,BEGIN塊可以在沒有任何輸入 檔案的條件下測試。因為在BEGIN塊執行完畢以前awk將不讀取任何輸入檔案。BEGIN塊通常被用來改變內建變數的值,如OFS、RS或FS等。也可 以用於初始化自訂變數值,或列印輸出標題。
#從輸入檔案中找到以north開頭的記錄count就加一,最後在END塊中輸出該變數。
/> awk '/^north/{count++}; END{print count}' testfile
原文:
本篇文章寫的非常好,更多參考
http://www.cnblogs.com/mchina/archive/2012/06/30/2571317.html