awk基礎05-自定義函式和指令碼

Surpassme發表於2018-10-24

    在之前文章中,我們都是在命令列中寫一些簡短的awk命令,而awk做為一門解釋型語言,一樣是支援指令碼執行的。

基本語法

#!/bin/awk -f
# 註釋
awk 指令碼體
  • #!:同shell,約定格式
  • /bin/awk:採用的直譯器位置
  • -f:awk選項,代表從檔案中讀取程式檔案
  • #:同shell,除第一行的#以外,其他均代表為註釋內容

指令碼示例

1、第一個示例

[root@localhost awk]# vim test.awk
[root@localhost awk]# cat test.awk
#!/bin/awk -f
BEGIN {print "this is test awk script"}
[root@localhost awk]# chmod +x test.awk
[root@localhost awk]# ./test.awk
this is test awk script

2、第二個示例

[root@localhost awk]# vim passwd.awk
[root@localhost awk]# cat passwd.awk
#!/bin/awk -f
BEGIN {FS=":"}
/root/ {print "Username is:"$1,"UID is:"$3,"GID is:"$4,"Shell is:"$NF}
[root@localhost awk]# chmod +x passwd.awk
[root@localhost awk]# ./passwd.awk  /etc/passwd
Username is:root UID is:0 GID is:0 Shell is:/bin/bash
Username is:operator UID is:11 GID is:0 Shell is:/sbin/nologin

自定義函式

    前面已經學習了awk內建的函式,相信大家已經有所理解和掌握了,本文我們將還學習一下awk自定義函式。

基本語法

function FunctionName(parameter list)
{
statements
return 表示式或結果
}
  • function:函式標識
  • FunctionName:使用者自定義函式的名稱,不能使用awk的保留關鍵字
  • parameter list:使用者自定義函式的引數列表,引數為可選
  • statements:函式主體
  • return:返回函式的結果,為可選

自定義函式示例

[root@localhost awk]# vim functions.awk
[root@localhost awk]# cat functions.awk

#!/bin/awk -f

# define function
function Add(firstNum,secondNum)
{
  sum=0
  for(i=firstNum;i<=secondNum;i++)
   {
     sum=sum+i;
   }
  return sum
}

function main(num1,num2)
{
 result=Add(num1,num2)
 print "Sum is :",result
}

# execute function
BEGIN { main(1,100) }

[root@localhost awk]# chmod +x functions.awk
[root@localhost awk]# ./functions.awk
Sum is : 5050

    到此awk的基礎知識已經介紹完畢,當然如果想更深入學習awk知識,則還多查閱相關資料。

本文同步在微信訂閱號上釋出,如各位小夥伴們喜歡我的文章,也可以關注我的微信訂閱號:woaitest,或掃描下面的二維碼新增關注:
MyQRCode.jpg

相關文章