awk的流程控制語句

2021-08-11 05:54:21 字數 2115 閱讀 2580

在linux awk的while、do-while和for語句中允許使用break,continue語句來控制流程走向,也允許使用exit這樣的語句來退出。break中斷當前正在執行的迴圈並跳到迴圈外執行下一條語句。if是流程選擇用法。awk中,流程控制語句,語法結構,與c語言型別。有了這些語句,其實很多shell程式都可以交給awk,而且效能是非常快的。下面是各個語句用法。

if(表示式) 

else

if(表示式)

else

//說明: 這裡的if表示如果,else表示否則

示例:

awk 'begin裡面的內容

print "very good";

} else

if(test>60)裡面的內容

print "good";

} else的內容

print "no pass";

}//說明:每條命令語句後面可以用;分號結尾。

while(表示式)

示例:

awk 'begin裡面的內容,直到test不滿足條件;

total+=i;

i++;

} print total; //列印total的值;

}'

awk 'begin裡的內容。

total+=i;

} print total; //列印total的值

}'

do  while(條件)
示例:

awk 'begin while(i

<=100) //1. 如果i

<=100,執行{}裡的內容

print

total; //列印total的值

}'

其他語句

陣列是awk的靈魂,處理文字中最不能少的就是它的陣列處理。因為陣列索引(下標)可以是數字和字串在awk中陣列叫做關聯陣列(associative

arrays)。awk 中的陣列不必提前宣告,也不必宣告大小。陣列元素用0或空字串來初始化,這根據上下文而定。

數字做陣列索引(下標):

array[1]="sun"

array[2]="kai"

字串做陣列索引(下標):

array["first"]="www"

array["last"]="name"

array["birth"]="1987"

說明:使用中print array[1]會列印出sun;使用print

array[2]會列印出kai;使用print[「birth」]會得到1987。

讀取陣列的值

; } //輸出的順序是隨機的

; } //len是陣列的長度

得到陣列長度:

awk 'begin' 

4 4

length返回字串以及陣列長度,split進行分割字串為陣列,也會返回分割得到陣列長度。

awk 'begin'

4

說明:asort對陣列進行排序,返回陣列長度

輸出陣列內容(無序,有序輸出):

4 test

1it2is

3 a

說明:for…in輸出,因為陣列是關聯陣列,預設是無序的。所以通過for…in得到是無序的陣列。如果需要得到有序陣列,需要通過下標獲得。

1 test

2it3is

5 test

注意: 陣列下標是從1開始,與c陣列不一樣

awk流程控制

本案例要求了解awk的流程控制操作,可自行設定awk語句來驗證一下操作 實現此案例需要按照如下步驟進行。1 單分支 統計 etc passwd檔案中uid小於或等於1000的使用者個數 root svr5 awk f end etc passwd 39統計 etc passwd檔案中uid大於100...

Python流程控制語句流程控制語句

流程控制語句1 if語句 if 語句基本用法 if 表示式 語句塊其中,表示式可以是乙個單純的布林值或變數,也可以是比較表示式或邏輯表示式,如果表示式為真,則執行 語句塊 如果表示式的值為假,就跳 過 語句塊 繼續執行後面的語句。2 if else語句 if else 語句基本用法 if 表示式 語...

awk系列 在awk中如何使用流程控制語句

當你回顧所有到目前為止我們已經覆蓋的 awk 例項,從 awk 系列的開始,你會注意到各種例項的所有指令是順序執行的,即乙個接乙個地執行。但在某些情況下,我們可能希望基於一些條件進行文字過濾操作,即流程控制語句允許的那些語句。在 awk 程式設計中有各種各樣的流程控制語句,其中包括 然而,對於本系列...