码迷,mamicode.com
首页 > 其他好文 > 详细

awk 条件及循环语句

时间:2019-07-08 23:44:01      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:mamicode   数值   cal   图片   用户   信息   表达   div   highlight   

条件语句

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

  

循环语句:

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


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

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

  

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

awk ‘BEGIN{FS=":"}{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 ‘BEGIN{printf "%-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 ‘BEGIN{printf "%-20s%-20s%-20s%-20s%-20s%-20s\n","Name","Chinese","English","Math","Physical","Average"}{sum=$2+$3+$4+$5;avg=sum/4}{if(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 条件及循环语句

标签:mamicode   数值   cal   图片   用户   信息   表达   div   highlight   

原文地址:https://www.cnblogs.com/crazymagic/p/11154717.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!