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
最新文章
- C#使用GET、POST请求获取结果
- iOS如何彻底避免数组越界
- Memcache的使用和协议分析详解
- mvc 导入excel表格
- jq分页异步刷新 ,全局刷新问题
- 【BZOJ-3910】火车 倍增LCA + 并查集
- 帝国cms实现会员注册之后根据所在会员组转向的方法
- UDP通信 Java
- IOS 学习笔记 2015-03-22 OC-API-日期
- 黄油刀ButterKnife的使用
- Ubuntu下deb包的解压、打包、安装、卸载及常用命令参数
- jQuery的事件处理
- 配置 RIPv1 和 RIPv2
- BCG界面库
- [Gym-102091E] How Many Groups
- 右值引用&;&;
- ubuntu安装anaconda后,终端输入conda,出现未找到命令
- 书法字帖 PDF转化为可打印PDF
- [日常] Go语言圣经--结构体,JSON习题
- 1-关于单片机通信数据传输(中断发送,大小端,IEEE754浮点型格式,共用体,空闲中断,环形队列)
热门文章
- 锁对象-条件对象-synchronized关键字
- 超过三张表禁止join
- VUE页面实现加载外部HTML方法
- 【Java 与数据库】How to Timeout JDBC Queries
- spring的注解AOP配置
- NGNIX 开启socket分发的使用配置
- 代码仓库gogs的基本配置使用
- mit6.830-lab2-常见算子和 volcano 执行模型
- java 编程基础 Class对象 反射 :获取类的构造方法,方法,成员变量,内部类,外部类,父类,实现的接口,修饰符等...
- JS判断是否是苹果系统(ios)和安卓系统(Android)客户端