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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM