awk 条件及循环语句

Posted crazymagic

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了awk 条件及循环语句相关的知识,希望对你有一定的参考价值。

条件语句

    if(条件表达式)
        动作1
    else if(条件表达式)
        动作2
    else
        动作3

  

循环语句:

    while循环:
    while(条件表达式)
        动作


    do while循环:
        do
            动作
        while(条件表达式)
    

    for循环:
        for(初始化计数器;计数器测试;计数器变更)
            动作

  

以:为分隔符,只打印/etc/passwd中第3个字段的数值在50-100范围内的行信息

awk ‘BEGINFS=":"if($3>50 && $3<100) print $0‘ passwd

技术图片

if.awk  

        BEGIN
            FS=":"
        
        
            if($3<50)
            
                printf "%-20s%-20s%-10d\\n","UID<50",$1,$3
            
            else if ($3>50 && $3<100)
            
                printf "%-20s%-20s%-10d\\n","50<UID<100",$1,$3
            
            else 
            
                printf "%-20s%-20s%-10d\\n","UID>100",$1,$3
            
        

  

输出 以 UID 以50位为分界点的用户,-f 将条件表达式写到文本中读取

awk -f if.awk passwd 

技术图片

 

计算下列每个同学的平均分数,并且只打印平均分数大于90的同学姓名和分数信息

        Allen    80    90    96    98
        Mike    93    98    92    91
        Zhang    78    76    87    92
        Jerry    86    89    68    92
        Han    85    95    75    90
        Li    78    88    98    100

算出平局成绩
awk ‘BEGINprintf "%-20s%-20s%-20s%-20s%-20s%-20s\\n","Name","Chinese","English","Math","Physical","Average"sum=$2+$3+$4+$5;avg=sum/4
printf "%-20s%-20d%-20d%-20d%-20d%-0.2f\\n",$1,$2,$3,$4,$5,avg‘ student.txt

  

技术图片

 

加入条件判断,如果平均分数大于90才打印

awk ‘BEGINprintf "%-20s%-20s%-20s%-20s%-20s%-20s\\n","Name","Chinese","English","Math","Physical","Average"sum=$2+$3+$4+$5;avg=sum/4if(avg>90)
 printf "%-20s%-20d%-20d%-20d%-20d%-0.2f\\n",$1,$2,$3,$4,$5,avg‘ student.txt 

技术图片

 

计算1+2+3+4+...+100的和,请使用while、do while、for三种循环方式实现

  

通过读取文件的方式载入awk的条件

add_while.awk

        BEGIN
            while(i<=100)
            
                # 一个变量不赋值,默认为0或者空
                sum+=i
                i++
                
            print sum
        

do while循环

awk -f add_dowhile.awk

技术图片

for循环

add_for.awk

        BEGIN
            for(i=0;i<=100;i++) 
            
                sum+=i
            
            print sum
        

技术图片

 

以上是关于awk 条件及循环语句的主要内容,如果未能解决你的问题,请参考以下文章

awk

条件判断及循环

条件及循环语句

Go 语言的循环及条件语句

兄弟连学Python(06)------- 条件语句和循环语句

python0.6-----条件控制语句/循环语句及使用技巧