awk的循环语句用于连续一次又一次地执行一组动作。awk只要循环条件为真就保持执行。就像C程序一样,awk支持多种循环语句。
首先,让我们看看while循环语句。
语法:
while(condition)
actions
1. while是awk关键字
2. 条件是条件表达式。
3. 动作是while循环的主体。如果有一个以上的action, actions必须花括号内封闭。
awk while循环首先检查条件;如果条件为真,执行actions,执行完所有的action之后,条件再次被检查,如果它是真,动作再次被执行。这个过程重复直到条件为假。
请注意,如果条件在第一次返回false,动作永远不会执行。
$ awk 'BEGIN {while (count ++< 50) string=string "x";print string}'
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
前面有讲到过awk里面空格也算连接符,这个while循环里 string = string “x”赋值给自己,每执行一次就多一个x 所以你会看到有50个x
下面的awk程序打印sold项目总数从items-sold.txt每个项目。
对于每一行,程序从字段2到字段7的值加起来。(字段1是项目号,因此它不添加到总数里面)。因此,while条件从第二个字段开始(在while开始之前定义i=2),并检查它是否到达记录的最后字段(i<=NF)。NF代表记录中的字段总数。
$ cat items-sold.txt
101 2 10 5 8 10 12
102 0 1 4 3 0 2
103 10 6 11 20 5 13
104 2 3 4 0 6 5
105 10 2 5 7 12 6
$ awk -f while.awk items-sold.txt
Item 101 : 47 quantities sold
Item 102 : 10 quantities sold
Item 103 : 65 quantities sold
Item 104 : 20 quantities sold
Item 105 : 42 quantities sold