条件语句用于在运行操作之前做一个測试。在前面的章节中,我们看到了模式匹配规则的一些演示样例。

模式匹配规则本质上就是影响输入循环的条件表达式。

在这一部分,我们主要就在action中所使用的条件语句进行探讨。

条件语句以if开头,并计算放在圆括号里的表达式。

语法是:

if (expression)

action1

[else

action2]

假设条件表达式expression的值为真(非零或非空)。就运行action1 。

当存在else语句时。假设条件表达式的值为假(零或空) 。则运行action2。一个条件表达式可能包括算术运算符、关系操作符、或布尔操作符。这些都在awk脚本中讨论过。

或许最简单的条件表达式是測试一个变量是否非零。

if (x) print
x

假设x是零, print语句将不运行。假设x是一个非零值,将打印x的值。也能够測试x是否等于还有一个值:

if ( x == y ) print
x

注意。 "=="是关系操作符而"="是赋值操作符。我们还能够用模式匹配操作符"~"来測试x是否与一个模式匹配:

if ( x
~ /[yY](es)?/ ) print
x

下面是几个补充的语法要点。假设操作时由多个语句组成的,要用一对大括号将操作括起来。

if (expression)

  statement1

  statement2

}

awk对大括号和语句的位置没有特殊的要求(和sed不同)。左大括号放在条件表达式后面,能够与条件表达式位于一行也能够在下一行。第一条语句能够紧跟左大括号或从下一行開始。右大括号放在最好一条语句的后面。能够与最后一条语句位于同一行也能够在下一行。在大括号的前后同意有空格或制表符。

尽管没有要求语句缩进书写,但这样能够改善可读性。

右大括号和else后面的换行符是可选的。

if ( expression) action1

[else action2]

假设在action1后面加一个分号表示结束。 action1后面的换行也是可选的。

if ( expression) action1; [else action2]

假设在同一行上用分号分隔多个语句。相同须要使用大括号。

在前面的文章中,我们曾看见过一段脚本用于计算学生平均成绩。我们能够用一个条件来推断某个学生是否及格。

if ( avg >= 65 )

    grade = "Pass"

else

    grade = "Fail"

赋给grade的值取决于表达式"avg >=65" 的计算结果是真还是假。

能够用多个条件语句来測试多个条件中的某个是否为真。比如,或许学生的成绩要用字母分级表示,而不是用及格或不及格来表示。下面用一个条件结构依据学生的平均分来指定一个字母成绩:

if (avg >= 90) grade = "A"

else if (avg >= 80) grade = "B"

else if (avg >= 70) grade = "C"

else if (avg >= 60) grade = "D"

else grade = "F"

应该注意到的一个重要事情是。这样的连续条件仅仅有当一个条件表达式计算结果为真时才停止求值。这时将跳过其它的条件。

假设没有一个条件表达式的计算结果为真,将执行最后的else部分,执行默认操作,在这样的情况下为grade赋值"F" 。

參考资料:http://www.linuxawk.com/communication/543.html

awk条件语句的更多相关文章

  1. awk 条件及循环语句和字符串函数

    条件语句 if(条件表达式) 动作1 else if(条件表达式) 动作2 else 动作3 循环语句: while循环: while(条件表达式) 动作 do while循环: do 动作 whil ...

  2. shell脚本进阶之条件测试与条件语句

       接着上篇博客,今天整理一下关于条件测试和条件语句方面的知识. shell脚本进阶之条件测试    在编写shell脚本时,经常需要对一些条件进行判断,可以使用测试命令test辅助完成测试过程.t ...

  3. Python —条件语句

    条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和非空(null ...

  4. php简写表达式,&& or || 缩写条件语句

    有时候学的多了, 好多小细节 都忘了 ,比如 简单的表达式, 三元表达式   ?:; $aa or $bb 表达式 等等! 写一些简单的表达式,备忘! php用&&和||缩写条件语句 ...

  5. java中的条件语句(if、if...else、多重if、嵌套if)

    Java条件语句之 if 生活中,我们经常需要先做判断,然后才决定是否要做某件事情.例如,如果考试成绩大于 90 分,则奖励一个 IPHONE 5S .对于这种"需要先判断条件,条件满足后才 ...

  6. javascript语句——条件语句、循环语句和跳转语句

    × 目录 [1]条件语句 [2]循环语句 [3]跳转语句 前面的话 默认情况下,javascript解释器依照语句的编写顺序依次执行.而javascript中的很多语句可以改变语句的默认执行顺序.本文 ...

  7. go语言条件语句 if else

    示例: if a < 5 { return 0 } else { return 1 } 关于条件语句,需要注意以下几点:  条件语句不需要使用括号将条件包含起来():  无论语句体内有几条语 ...

  8. Todd's Matlab讲义第4讲:控制误差和条件语句

    误差和残量 数值求解方程\(f(x)=0\)的根,有多种方法测算结果的近似程度.最直接的方法是计算误差.第\(n\)步迭代结果与真值\(x^\*\)的差即为第\(n\)步迭代的误差: \begin{e ...

  9. 5-python学习——条件语句

    5-python学习——条件语句 5-python学习——条件语句 条件语句if else形式 if else条件语句说明 测试一下 编程语言一般都由这么几个部分组成 变量 条件分支语句 循环语句 函 ...

随机推荐

  1. IDEA创建Maven项目显示一直加载中的问题

    使用IDEA这款工具创建Maven项目的时候出现过下面这种情况: 红色区域即maven骨架加载不出来... 或 loading loading loading ... 有时候需要很长一段时间才能加载出 ...

  2. MVC 单元测试xUnit初探

    对于.NET项目 Web Api的业务逻辑后台开发[特别是做Web Api接口]而言,编写单元测试用例,会极大的减轻代码帮助与运行的方式.然而使用测试框架,相对于自带的,我更加推荐是用xUnit.ne ...

  3. 2013-11-02 【webrebuild广州站】分享会纪要

    为了不让自己沉浸个人的技术研究当中,也为了多去接触业界新技术新思想,今天去参加了webrebuild广州站的一个分享交流会,效果不错,有一些获益.听了四个主题,依据个人获取信息的情况来做个纪要(比较粗 ...

  4. LVM 镜像硬盘更换、数据恢复(centos7.4 redhat7.5)

      案例说明 Centos7 VG:vg LV:vg-lvRedhat 7.5VG:vgtest LV:lvtest 目的:模拟硬盘 /dev/sdb损坏.在线添加新硬盘/dev/sdc,lv镜像数据 ...

  5. KVM 日常使用命令

    [root@Eren liwm]# ps ax | grep kvm  681 ?        S<     0:00 [kvm-irqfd-clean]17597 pts/0    S+   ...

  6. camke 参数

    cmake -DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.32 \   -DMYSQL_DATADIR=/application/mysql-5.5.32 ...

  7. RHEL8.0-beta-1.ISO

    https://pan.baidu.com/s/1Yh_xuz39xGRrCtGtwhuqQg RHEL-8.0-beta-1-x86_64-dvd.iso       文件名: E:\rhel-8. ...

  8. vue-cli解析

    前言 这段时间,算是空出手来写几篇文章了.由于很久都没有时间整理现在所用的东西了,所以,接下来会慢慢整理出一些文档来记录前段时间的工作和生活. 这篇文章的主题是vue-cli的理解.或许,很多人在开发 ...

  9. [luogu] P2787 语文1(chin1)- 理理思维(分块)

    P2787 语文1(chin1)- 理理思维 题目背景 蒟蒻HansBug在语文考场上,挠了无数次的头,可脑子里还是一片空白. 题目描述 考试开始了,可是蒟蒻HansBug脑中还是一片空白.哦不!准确 ...

  10. ztree实现根节点右击事件,显示添加删除

    需求,右击树节点,出现编辑和删除的提示框 1:在setting 配置里面,给callback设置,右击事件onRightClick: 2:写一个函数onRightClick function onRi ...