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

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

在这一部分,我们主要就在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. 初识Git(二)

    与我们前一篇随笔一样创建文件夹,init我们创建的文件夹,并且创建一个test.txt文本文件,add文本文件,commit文本文件,接下来在文本文件中添加文本: 与上一次不同的是我们这一次在编辑文件 ...

  2. 《Unix环境高级编程》读书笔记 第11章-线程

    1. 引言 了解如何使用多个控制线程在单进程环境中执行多个任务. 不管在什么情况下,只要单个资源需要在多个用户键共享,就必须处理一致性问题. 2. 线程概念 典型的Unix进程可以看成只有一个控制线程 ...

  3. 前端换行显示,后端返回<br>

  4. WordPress 不错的插件

    Akismet – 防止垃圾评论 WP-PostViews Plus - 页面访问量统计 All in One SEO Pack – 搜索引擎优化的插件,自动优化搜索引擎. WP Super Cach ...

  5. es6 学习7 Set 和 Map 数据结构

     Set 和 Map 数据结构 一.Set ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. const set = new Set([1, 2, 3, 4, ...

  6. vue之父子组件间通信实例讲解(props、$ref、$emit)

       组件间如何通信,也就成为了vue中重点知识了.这篇文章将会通过props.$ref和 $emit 这几个知识点,来讲解如何实现父子组件间通信. 组件是 vue.js 最强大的功能之一,而组件实例 ...

  7. 微信小程序手势滑动卡片案例

    最近工作中有项目要使用微信小程序技术进行开发,其中一项功能困扰了我很久,卡片滑动动效以及手势识别.经过一番研究和参考,现在把成果展示.记录自己踩到的坑,如果大家有需要,也可以帮助到大家. 效果图: 首 ...

  8. HBuilder 连接小米手机

    (1)手机与电脑未用USB数据线连接(嘿嘿,这一部大家估计都做到了,可略过) (2)电脑上需要安装电脑版的手机助手,帮助手机顺利连接上(用安卓手机联调的话可安装360手机助手,若用iPhone的话可安 ...

  9. shell 文件中添加内容

    下文所有 1111  ,  2222 均为字符串 sed -i '/1111/i\2222' a.txt   在a.txt中找到所有符合1111得 前面加上2222 sed -i '/1111/a\2 ...

  10. Linux系统之间文件传输 scp 命令

    个人使用记录 scp /home/liwm/Downloads/mysql-5.5.32-linux2.6-x86_64.tar.gz root@192.168.122.3:/home/oldboy/ ...