标签:blog 使用 for ar 代码 html log on new
【版权声明:转载请保留出处:blog.csdn.net/gentleliu。Mail:shallnew at 163 dot com】
与上一节printf一样,awk的循环判断和C语言的循环判断语法极其类似。
1、 While循环
#!/bin/sh awk ' BEGIN { ORS="" } { i=0 while (i < NF) { printf("* ") i++ } print "\n" } ' group_file1
首先,将输出记录分隔符 ORS 设置成 ""(空),它将使 print 语句在每个调用结尾不输出新行。这意味着如果希望任何文本从新的一行开始,那么需要明确写入 print "\n"。
在代码中,设置变量i来存储当前中处理字段编号,对每一行记录,i首先设置为0,然后对每一字段打印一个“*”,每一行记录打印完之后打印一个换行,由于将 ORS 设置成 "",print将不输出2个换行。下面为打印结果:
#./7_awk_while.sh * * * * * * * * * * * * * * * * #
2、 do…while循环
awk 还有"do...while" 循环,它在代码块结尾处对条件求值,而不象标准 while 循环那样在开始处求值。
示例(输出六个*号):
#!/bin/sh echo "" | awk ' { i=0 do { printf("* ") }while (i++ < 5) printf("\n") }'
for ( initial assignment; comparison; increment ) { code block }
#!/bin/sh echo"" | awk ' { for (i=0; i<5; i++) { printf("* ") } printf("\n") }'
#!/bin/sh echo"" | awk ' BEGIN { a[1]="123" a[2]="456" a[3]="789" } END{ for(i in a) { print a[i] } }'Awk数组的下标还可以使用字符串。awk 将 arr["1"] 和 arr[1] 看作同一个元素。
#!/bin/sh echo"" | awk ' BEGIN { a[1]="123" a[2]="456" a[3]="789" a["hello"]="awk" a["3"]="world" } { for(i in a) { print a[i] } } END { print "======end========" print a[3] print a["3"] } '
awk 123 456 world ======end======== world world
标签:blog 使用 for ar 代码 html log on new
原文地址:http://blog.csdn.net/shallnet/article/details/38874017