AWK循环 - Awk教程

像条件语句,AWK还提供了循环语句。它被用来执行设定在重复的方式动作。循环继续执行,只要循环条件为true。本教程介绍AWK循环使用合适的例子。

For 循环

下面是for循环的语法:

for (initialisation; condition; increment/decrement)
    action

初始的语句执行初始化动作,然后它检查的条件;如果条件为真,那么它执行操作,在这之后它执行递增或递减操作。循环继续执行,只要条件为真。比如下面的例子使用循环打印从1到5的数:

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

在执行上面的代码后,得到以下结果:

1
2
3
4
5

While 循环

While循环一直执行的动作,直到一个特定的逻辑条件计算为真。下面给出的是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循环的语法:

do
    action
while (condition)

在do-while循环操作语句被执行至少一次,即使在条件语句的计算结果为假。例如示例下面使用do-while循环打印1到5的数字:

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

在执行上面的代码后,得到以下结果:

1
2
3
4
5

Break 语句

如其名称提示,它用于结束循环的执行。这里用于结束循环,当sum大于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语句用于循环内跳到循环的下一次迭代。当我们想跳过循环里面的一些数据的处理是非常有用的。比如下面的例子使用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

Exit 语句

它是用来停止脚本的执行。它接受一个整数作为参数,这将是AWK进程的退出状态代码。如果没有提供任何参数,退出返回状态为零。这里是其中停止执行当总和大于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