AWK if(條件)語句與迴圈簡介

安全劍客發表於2020-10-06
awk 以if結構開頭的話句屬於操作語句。條件模式(conditional pattern) 中。if是隱含的。而條件操作語句的if則是直接宣告的,後面跟了一個用圓括號括起來的表示式。

AWK if(條件)語句與迴圈簡介AWK if(條件)語句與迴圈簡介

條件語句
IF 語句

IF 條件語句語法格式如下:

if (condition)
    action

也可以使用花括號來執行一組操作:

if (condition)
{
    action-1
    action-1
    .
    .
    action-n
}

以下例項用來判斷數字是奇數還是偶數:

$ awk 'BEGIN {num = 10; if (num % 2 == 0) printf "%d 是偶數\n", num }'

輸出結果為:

10 是偶數
IF - ELSE 語句

IF - ELSE 條件語句語法格式如下:

if (condition)
    action-1
else
    action-2

在條件語句 condition 為 true 時只需 action-1,否則執行 action-2。

$ awk 'BEGIN {
    num = 11; 
    if (num % 2 == 0) printf "%d 是偶數\n", num; 
    else printf "%d 是奇數\n", num 
}'

輸出結果為:

11 是奇數
IF - ELSE - IF

我們可以建立多個 IF - ELSE 格式的判斷語句來實現多個條件的判斷:

$ awk 'BEGIN {
a=30;
if (a==10)
  print "a = 10";
else if (a == 20)
  print "a = 20";
else if (a == 30)
  print "a = 30";
}'

輸出結果為:

a = 30
迴圈
For

For 迴圈的語法如下:

for (initialisation; condition; increment/decrement)
    action

for 語句首先執行初始化動作( initialisation ),然後再檢查條件( condition )。如果條件為真,則執行動作( action ),然後執行遞增( increment )或者遞減( decrement )操作。只要條件為 true 迴圈就會一直執行。每次迴圈結束都會進條件檢查,若條件為 false 則結束迴圈。

下面的例子使用 For 迴圈輸出數字 1 至 5:

$ awk 'BEGIN { for (i = 1; i <= 5; ++i) print i }'

輸出結果為:

1
2
3
4
5
While

While 迴圈的語法如下:

while (condition)
    action

While 迴圈首先檢查條件 condition 是否為 true ,若條件為 true 則執行動作 action。此過程一直重複直到條件 condition 為 flase 才停止。

下面是使用 While 迴圈輸出數字 1 到 5 的例子:

$ awk 'BEGIN {i = 1; while (i < 6) { print i; ++i } }'

輸出結果為:

1
2
3
4
5
Break

break 用以結束迴圈:

在下面的示例子中,當計算的和大於 50 的時候使用 break 結束迴圈:

$ awk 'BEGIN {
   sum = 0; for (i = 0; i < 20; ++i) { 
      sum += i; if (sum > 50) break; else print "Sum =", sum 
   } 
}'

輸出結果為:

Sum = 0
Sum = 1
Sum = 3
Sum = 6
Sum = 10
Sum = 15
Sum = 21
Sum = 28
Sum = 36
Sum = 45

Continue
Continue 語句用於在迴圈體內部結束本次迴圈,從而直接進入下一次迴圈迭代。

下面的例子輸出 1 到 20 之間的偶數:

$ awk 'BEGIN {for (i = 1; i <= 20; ++i) {if (i % 2 == 0) print i ; else continue} }'

輸出結果為:

2
4
6
8
10
12
14
16
18
20
Exit

Exit 用於結束 程式的執行。

該函式接受一個整數作為參數列示 AWK 程式結束狀態。 如果沒有提供該引數,其預設狀態為 0。

下面例子中當和大於 50 時結束 AWK 程式。

$ awk 'BEGIN {
   sum = 0; for (i = 0; i < 20; ++i) {
      sum += i; if (sum > 50) exit(10); else print "Sum =", sum 
   } 
}'

輸出結果為:

Sum = 0
Sum = 1
Sum = 3
Sum = 6
Sum = 10
Sum = 15
Sum = 21
Sum = 28
Sum = 36
Sum = 45

讓我們檢查一下 執行後的返回狀態:

$ echo $?

執行上面的 可以得到如下的結果:

19

原文地址:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2725514/,如需轉載,請註明出處,否則將追究法律責任。

相關文章