awk一个神奇而又强大的功能,绝对是一个开发利器,效率直选!希望这里的一些总结能帮到那些存在困惑的人!
上篇总结主要针对awk语法基本使用做出说明,本文主要总结awk的流程控制知识点;
linux awk语句的流程控制基本上c语言规则类似,awk中,if 是流程选择用法。流程控制语句,语法结构,与c语言类型。awk的for、while、do-while语句中允许使用break,continue语句来控制流程走向,也允许使用exit来退出运行。break中断当前正在执行的循环并跳到循环外执行下一条语句。有了这些语句,其实很多shell程序都可以交给awk,而且性能是非常快的。下面是各个语句用法。
1 条件判断语句-if
简单if判断语句:
if(表达式)
语句1
else
语句2
多分支语句
if(表达式)
{语句1}
else if(表达式)
{语句2}
else
{语句3}
实例:
awk 'BEGIN{
test=100;
if(test>=90){
print "very very good";
}
else if(test>80 && test <90 ){
print "very good";
}
else if(test>60){
print "good";
}
else{
print "no pass";
}
}'
2 循环语句-while
while(表达式)
{语句}
实例:
awk 'BEGIN{
test=100;
total=0;
while(i<=test){
total+=i;
i++;
}
print total;
}'
3 循环语句-for
#### 1 - 格式1
for(变量 in 数组)
{语句}
#### 2 - 格式2
for(变量;条件;表达式)
{语句}
实例
格式1:
awk 'BEGIN{
for(k in ENVIRON){
print k"="ENVIRON[k];
}
}'
格式2:
awk 'BEGIN{
total=0;
for(i=0;i<=100;i++){
total+=i;
}
print total;
}'
4 循环语句-do
do
{语句} while(条件)
实例:
awk 'BEGIN{
total=0;
i=0;
do {total+=i;i++;} while(i<=100)
print total;
}'
5 其他关键字
- break 当 break 语句用于 while 或 for 语句时,导致退出程序循环。
- continue 当 continue 语句用于 while 或 for 语句时,使程序循环移动到下一个迭代。
- next 能能够导致读入下一个输入行,并返回到脚本的顶部。这可以避免对当前输入行执行其他的操作过程。
- exit 语句使主输入循环退出并将控制转移到END,如果END存在的话。如果没有定义END规则,或在END中应用exit语句,则终止脚本的执行。