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

最新文章

  1. C#使用GET、POST请求获取结果
  2. iOS如何彻底避免数组越界
  3. Memcache的使用和协议分析详解
  4. mvc 导入excel表格
  5. jq分页异步刷新 ,全局刷新问题
  6. 【BZOJ-3910】火车 倍增LCA + 并查集
  7. 帝国cms实现会员注册之后根据所在会员组转向的方法
  8. UDP通信 Java
  9. IOS 学习笔记 2015-03-22 OC-API-日期
  10. 黄油刀ButterKnife的使用
  11. Ubuntu下deb包的解压、打包、安装、卸载及常用命令参数
  12. jQuery的事件处理
  13. 配置 RIPv1 和 RIPv2
  14. BCG界面库
  15. [Gym-102091E] How Many Groups
  16. 右值引用&amp;&amp;
  17. ubuntu安装anaconda后,终端输入conda,出现未找到命令
  18. 书法字帖 PDF转化为可打印PDF
  19. [日常] Go语言圣经--结构体,JSON习题
  20. 1-关于单片机通信数据传输(中断发送,大小端,IEEE754浮点型格式,共用体,空闲中断,环形队列)

热门文章

  1. 锁对象-条件对象-synchronized关键字
  2. 超过三张表禁止join
  3. VUE页面实现加载外部HTML方法
  4. 【Java 与数据库】How to Timeout JDBC Queries
  5. spring的注解AOP配置
  6. NGNIX 开启socket分发的使用配置
  7. 代码仓库gogs的基本配置使用
  8. mit6.830-lab2-常见算子和 volcano 执行模型
  9. java 编程基础 Class对象 反射 :获取类的构造方法,方法,成员变量,内部类,外部类,父类,实现的接口,修饰符等...
  10. JS判断是否是苹果系统(ios)和安卓系统(Android)客户端