使用 AWK 撰寫 Recusive Program

AWK 中除了函數的參數列(Argument List)上的參數(Arguments)外,
所有變數不管於何處出現全被視為 Global variable. 其生命持續
至程式結束 — 該變數不論在function外或 function內皆可使用,
只要變數名稱相同所使用的就是同一個變數,直到程式結束.
因 Recusive 函數內部的變數, 會因它呼叫子函數(本身)而重覆使用,
故撰寫該類函數時, 應特別留心.

例如 : 執行

awk '

BEGIN
{

x = 35

y = 45

test_variable( x )
printf("Return to main : arg1= %d, x= %d, y= %d, z= %d\n",
arg1, x, y, z)
}

function test_variable( arg1 )
{
arg1++ # arg1 為參數列上的參數, 是local variable. 離開此函數後將消失.

y ++ # 會改變主式中的變數 y

z = 55 # z 為該函數中新使用的變數, 主程式中變數 z 仍可被使用.
printf("Inside the function: arg1=%d,x=%d, y=%d, z=%d\n",arg1, x, y, z)
} '

結果螢幕印出


Inside the function: arg1= 36,x= 35, y= 46, z= 55
Return to main : arg1= 0, x= 35, y= 46, z= 55

繼續閱讀 使用 AWK 撰寫 Recusive Program

awk 語法 中文介紹

此篇轉自於 http://blog.csdn.net/weekly123/archive/2006/12/28/1465675.aspx

Awk 是一種非常好的語言,同時有一個非常奇怪的名稱。在本系列(共三篇文章)的第一篇文章中,Daniel Robbins 將使您迅速掌握 awk 編程技巧。隨著本系列的進展,將討論更高級的主題,最後將演示一個真正的高級 awk 演示程序。
捍衛 awk
在本系列文章中,我將使您成為精通 awk 的編碼人員。我承認,awk 並沒有一個非常好聽且又非常「時髦」的名字。awk 的 GNU 版本(叫作 gawk)聽起來非常怪異。那些不熟悉這種語言的人可能聽說過 “awk”,並可能認為它是一組落伍且過時的混亂代碼。它甚至會使最博學的 UNIX 權威陷於錯亂的邊緣(使他不斷地發出 “kill -9!” 命令,就像使用咖啡機一樣)。

的確,awk 沒有一個動聽的名字。但它是一種很棒的語言。awk 適合於文本處理和報表生成,它還有許多精心設計的特性,允許進行需要特殊技巧程序設計。與某些語言不同,awk 的語法較為常見。它借鑒了某些語言的一些精華部分,如 C 語言、python 和 bash(雖然在技術上,awk 比 python 和 bash 早創建)。awk 是那種一旦學會了就會成為您戰略編碼庫的主要部分的語言。

 繼續閱讀 awk 語法 中文介紹