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

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

在这一部分,我们主要就在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. POJ 1742 Coins(多重背包?)

    题解 一个自然的思路是对于每一个物品做一次01背包 然后T飞了. 试着用二进制拆分,还是T了. 单调队列,对不起,懒,不想写. 我们这样想.设dp[i]代表i这个面值前几种硬币是否能凑到 然后对于每一 ...

  2. salt 安装kubernetes集群3节点

    [root@linux-node1 k8s]# tree .├── etcd.sls├── files│   ├── cfssl-1.2│   │   ├── cfssl-certinfo_linux ...

  3. vue.js的<slot>

    使用插槽分发内容在封装vue组件的时候,很多时候就不得不使用到vue的一个内置组件<slot>.slot是插槽的意思,顾名思义,这个<slot>组件的意义是预留一个区域,让其中 ...

  4. HTTP cookies 详解

    http://blog.csdn.net/lijing198997/article/details/9378047

  5. django 笔记8 url模板 自定义函数 simple_tag

    感谢alex老师~ 知识点: URL - 两个没见 url>路由系统> 函数或类 > 返回字符串 Form表单提交: 提交 >url>函数或类中的方法 -.. HttpR ...

  6. iOS菜鸟成长笔记(2)——网易彩票练习

    距离上一篇<第一个iOS应用>已经有一个多月了,今天来和大家一起学习和分享一下一个小练习<网易彩票> 首先我们向storyboard中拖入一个TabBarController和 ...

  7. 前端验证银行卡(Luhn校验算法)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 由浅入深讲解数据库中Synonym的使用方法

    1.Synonym的概念 Synonym(同义词)是SQL Server 2005的新特性.推出已经有几年的时间了.我们可以简单的理解Synonym为其他表的别名.本文中使用Northwind数据库为 ...

  9. HDU 5214 Movie【贪心】

    题意:给出n,l[1],r[1],a,b,c,d 其中 l[i]=l[i-1]*a+b,r[i]=r[i-1]*c+d; 问能否从这n个区间中选出不相交不重叠的三个区间 看的题解 先考虑最左边的区间, ...

  10. ora_tool

    #!/bin/ksh # # Copyright (c) 1998, 2002, Oracle Corporation.  All rights reserved. #   version() {   ...