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