Awk-loops

提供:Dev Guides
移動先:案内検索

AWK-ループ

この章では、AWKのループと適切な例を説明します。 ループは、一連のアクションを繰り返し実行するために使用されます。 ループ条件が真である限り、ループの実行が継続されます。

ループ用

*for* ループの構文は-

構文

for (initialization; condition; increment/decrement)
   action

最初に、 for ステートメントが初期化アクションを実行してから、条件をチェックします。 条件が真の場合、アクションを実行し、その後、インクリメントまたはデクリメント操作を実行します。 条件が真である限り、ループの実行が継続されます。 たとえば、次の例では、 for ループを使用して1〜5を出力します-

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

このコードを実行すると、次の結果が得られます-

出力

1
2
3
4
5

Whileループ

*while* ループは、特定の論理条件がtrueと評価されるまでアクションを実行し続けます。 *while* ループの構文は次のとおりです-

構文

while (condition)
   action

AWKは最初に条件をチェックします。条件が真の場合、アクションを実行します。 このプロセスは、ループ条件がtrueと評価される限り繰り返されます。 たとえば、次の例では、 while ループを使用して1〜5を出力します-

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

このコードを実行すると、次の結果が得られます-

出力

1
2
3
4
5

Do-Whileループ

*do-while* ループは、ループの終わりにテスト条件が評価されることを除いて、whileループに似ています。 * *do-while* * loopの構文は次のとおりです-

構文

do
   action
while (condition)
*do-while* ループでは、条件ステートメントがfalseと評価された場合でも、アクションステートメントは少なくとも1回実行されます。 たとえば、次の例では、 *do-while* ループを使用して1〜5個の数字を出力します-

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

このコードを実行すると、次の結果が得られます-

出力

1
2
3
4
5

ブレイクステートメント

その名前が示すように、ループの実行を終了するために使用されます。 合計が50を超えるとループを終了する例を次に示します。

[jerry]$ 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の偶数を出力します。

[jerry]$ 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

終了ステートメント

スクリプトの実行を停止するために使用されます。 AWKプロセスの終了ステータスコードである整数を引数として受け入れます。 引数が指定されていない場合、 exit はステータス0を返します。 合計が50を超えると実行を停止する例を次に示します。

[jerry]$ 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

スクリプトの戻りステータスを確認しましょう。

[jerry]$ echo $?

このコードを実行すると、次の結果が得られます-

出力

10