awk中自訂函數

來源:互聯網
上載者:User

awk中自訂函數 定義和調用使用者自己的函數是幾乎每個進階語言都具有的功能,awk也不例外,但原始的awk並不提供函數功能,只有在nawk或較新的awk版本中才可以增加函數。 函數的使用包含兩部分:函數的定義與函數調用。其中函數定義又包括要執行的代碼(函數本身)和從主程式碼傳遞到該函數的臨時調用。awk函數的定義方法如下: function 函數名(參數表){ 函數體 } 在gawk中允許將function省略為func,但其它版本的awk不允許。函數名必須是一個合法的標誌符,參數表中可以不提供參數(但在調用函數時函數名後的一對括弧仍然是不可缺少的),也可以提供一個或多個參數。與C語言相似,awk的參數也是通過值來傳遞的。 在 awk 中調用函數比較簡單,其方法與C語言相似,但awk比C語言更為靈活,它不執行參數有效性檢查。換句話說,在你調用函數時,可以列出比函數預計(函數定義中規定)的多或少的參數,多餘的參數會被awk所忽略,而不足的參數,awk將它們置為預設值0或Null 字元串,具體置為何值,將取決於參數的使用方式。 awk函數有兩種返回方式:隱式返回和顯式返回。當awk執行到函數的結尾時,它自動地返回到調用程式,這是函數是隱式返回的。如果需要在結束之前退出函數,可以明確地使用返回語句提前退出。方法是在函數中使用形如:return 傳回值 格式的語句。 例:下面的例子示範了函數的使用。在這個樣本中,定義了一個名為print_header的函數,該函數調用了兩個參數FileName和 PageNum, FileName參數傳給函數當前使用的檔案名稱,PageNum參數是當前頁的頁號。這個函數的功能是列印(顯示)出當前檔案的檔案名稱,和當前頁的頁號。完成這個功能後,這個函數將返回下一頁的頁號。 nawk >'BEGIN{pageno=1;file=FILENAME >pageno=print_header(file,pageno);#調用函數print_header >printf("當前頁頁號是:%d\n",pageno); >} >#定義函數print_header >function print_header(FileName,PageNum){ >printf("%s %d\n",FileName,PageNum); >PageNum++;return PageNUm; >} >}' myfile 執行這個程式將顯示如下內容: myfile 1 當前頁頁號是:2 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.