• awk流程控制


    awk 中if和for while

    一、awk嵌套if判断语句

    格式如下:

    if(表达式)

    {语句1}

    else if(表达式)

    {语句2}

    else

    {语句3}

    如果if后边的语句块是的单个语句,{}可以不用写,如果是多条语句,必须用{}括起来,表示它们都属于一个if的执行语句

    格式:

    if(表达式)

    {语句1;语句2;语句3;}

    例子1:

    [root@centos-1 ~]# vi a

    #!/bin/bash

    awk -F: '{

    if ($1 == "root")

        {

         print "这是超级用户";

        }

    else

        {

         print "这是普通用户";

        }

    }' /etc/passwd

     

    执行结果

    [root@centos-1 ~]# sh a

    这是超级用户

    这是普通用户

    这是普通用户

    这是普通用户

    这是普通用户

     

     

     

    二、多if嵌套

     

    例子:

    #!/bin/bash

    awk -F: '{

    if ($NF == "/sbin/nologin" )

         {

          if ( $1 == "adm")

            {

                    print "benet"

            }

          if ( $1 == "ftp")

            {

                    print "accp"

            }

         }

    }' /etc/passwd

     

     

    三、awk中的for循环

    格式1:

    for (i in 取值列表)

    {执行语句}

     

    格式2:

    for (变量;循环条件;表达式)

    {执行语句}

     

    如果for后边的语句块是的单个语句,{}可以不用写,如果是多条语句,必须用{}括起来,表示它们都属于一个for循环的执行语句

    格式:

    for (变量;循环条件;表达式)

    {执行语句1;执行语句2;执行语句3}

     

    例子1:动作没有用{}扩起来。用;结束动作语句。

     

    awk 'BEGIN{a=0;for(i=0;i<=100;i++)a+=i;print a}'

    5050

    a+=1;  :这里的分号表示for的一个结束点,a+=i属于for的执行语句。而print a结束后才执行

    如果将{a+=i;print a}用大括号括起来就是另外一个意思了。这两句都都是for的执行语句了。

    结果如下:

    [root@localhost ~]# awk 'BEGIN{a=0;for(i=0;i<=100;i++){a+=i;print a}}'
    0
    1

    ............

    ............

    4851
    4950
    5050

     

    例子2:动作用{}括起来,没有用;结束

    #!/bin/bash

    awk 'BEGIN{

        {a=0}

        for (i=0;i<=100;i++)

        {a+=i}

        print a

    }'

    这对大括号说明里边的所有动作都在BEGIN当中的。

    注意:上述的两个例子都是在BEGIN中执行的。因为我们是在BEGIN{}里边执行的动作

    也就是说,我们在用awk计算的时候,直接在BEGIN{}部分中就可以完成

     

    例子:

    [root@centos-1 ~]# awk 'BEGIN{a=1;b=2;print (a+b)}'

    3

  • 相关阅读:
    listbox,tree定位item后显示出来
    dbgrideh导出Excel
    ---注册job 设置时间 必须在命令窗口内执行
    四舍五入函数 function MyRound2
    解决delphi7注册过期方法
    Trunc错误浮点计算处理
    BGridEh,同时也用了DBGrid。在OnDrawColmnCell事件中调用DefaultDrawColumnCell,编译时却提示Incom
    不能借助DLL的全局变量来达到两个应用程序间的数据传递,除非使用内存映像文件
    JavaScript实现换肤功能
    echarts图表隐藏之后再展示出现变形
  • 原文地址:https://www.cnblogs.com/pangbing/p/6955712.html
Copyright © 2020-2023  润新知