zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    670. Maximum Swap
    653. Two Sum IV
    639. Decode Ways II
    636. Exclusive Time of Functions
    621. Task Scheduler
    572. Subtree of Another Tree
    554. Brick Wall
    543. Diameter of Binary Tree
    535. Encode and Decode TinyURL
    博客园自定义背景图片
  • 原文地址:https://www.cnblogs.com/pangbing/p/6955712.html
Copyright © 2011-2022 走看看