71. while 循环
awk 循环语句用于连续一次又一次地执行一组操作。只要循环条件为真,awk 就会一直执行语句。就像 C 程序一样,awk 支持各种循环语句。
首先,让我们看一下 while
循环语句。
语法:
while(condition)
actions
while
是 awk 关键字。condition
是条件表达式。actions
是 while 循环的主体。 如果有多个操作,则这些操作必须括在大括号内。
awk while
循环首先检查条件。如果条件为真,则执行操作。执行完所有操作后,再次检查条件,如果为真,则再次执行操作。
重复此过程直到条件变为假。请注意,如果条件在第一次迭代中返回
false
,则操作将永远不会执行。
下面的示例使用 BEGIN
块,该块在 Awk 程序中的其他任何内容之前执行。 awk while
循环将字符 "x"
附加到变量
string
50 次。
变量
count
在每次检查时都会进行后递增,如果在递增之前小于 50 则执行操作。所以循环恰好执行了 50 次。 循环结束后,打印
string
变量的值。
$ awk 'BEGIN { while (count++<50) string=string "x"; print string }' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
以下 awk 程序从 items-sold.txt
文件中打印每个商品的已售商品总数。
对于每一行,程序必须将字段 2 到字段 7 的值相加。(字段 1 是项目编号,因此其值不会添加到总数中)。
因此,while
条件从第二个字段开始(因为 while 之前的 i=2
),并检查是否已到达记录中的最后一个字段(i <= NF
)。 N 表示记录中的字段总数。
$ cat while.awk { i=2; total=0; while (i <= NF) { total = total + $i; i++; } print "Item", $1, ":", total, "quantities sold"; } $ 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