awk条件语句

条件语句用于在执行操作之前做一个测试。在前面的章节中,我们看到了模式匹配规则的一些示例。模式匹配规则本质上就是影响输入循环的条件表达式。在这一部分,我们主要就在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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-13 16:40:16

awk条件语句的相关文章

awk 条件及循环语句

条件语句 if(条件表达式) 动作1 else if(条件表达式) 动作2 else 动作3 循环语句: while循环: while(条件表达式) 动作 do while循环: do 动作 while(条件表达式) for循环: for(初始化计数器;计数器测试;计数器变更) 动作 以:为分隔符,只打印/etc/passwd中第3个字段的数值在50-100范围内的行信息 awk 'BEGIN{FS=":"}{if($3>50 && $3<100) prin

awk if语句

awk命令以if结构开头的话句属于操作语句.条件模式(conditional pattern) 中.if是隐含的.而条件操作语句的if则是直接声明的,后面跟了一个用圆括号括起来的表达式.如果该表达式的运算结果为真(非0或非空),则执行表达式后的语句(或语句块).如果跟在条件表达式后面的语句不止一条,就要用分号或换行符把它们隔开,还要用花括号把这一组语句都括起来,以作为一个块来被执行. 格式 if(表达式) { 语句;语句;... } 范例 $ awk '{if($6 > 50) print $1

Shell中if条件语句的知识和实践

本文主要讲解if条件语句在shell的使用场景和示例 基本大纲: 1.if条件语句的语法 2.if条件语句多种条件表达式语法 3.单分支if条件语句实践 4.if条件语句的深入实践及场景使用 一:if条件语句的语法 1)单分支结构 第一种语法: if    <条件表达式> then 指令 fi 第二中语法: if    <条件表达式>:then 指令 fi 上面的"<条件表达式>"部分可以是test.[].[[]].(())等条件表达式,也可以直接使

Shell语法—— if 条件语句

if 条件语句语法 1.单分支结构 if < 条件表达式 >; then 指令 fi 2.双分支结构 if < 条件表达式 >; then 指令 1 else 指令 2 fi 3.多分支结构 if < 条件表达式 1 >; then 指令 1 else if < 条件表达式 2 >;then 指令 2 elif < 条件表达式 3 >;then 指令 3 else 指令 4 fi if 条件语句多种条件表达式语法 1.test 条件表达式 if

第六章—条件语句和循环

6.1①条件语句在脚本中称为控制流.②尽管JavaScript不支持"elseif"关键字,但是允许通过if/else语句链创建这种类型的语句.③switch条件语句中default项中也用上break语句,因为如果它没有在最后,后面的case依然会执行.④如果case中没有default,而它又不是最后一个,则称为fall through(落空)⑤条件运算符(也称为三元运算符): 6.2提示框获得用户输入: var username=window.prompt("Give

Python条件语句

1) if 语句 #格式if (条件):    语句块 2) if else 语句 #格式if (条件):    语句块1else:    语句块2 3) if-elif-else 语句 #格式if (条件1):    语句块1elif (条件2):    语句块2--else:    语句块n 4) if嵌套 #格式if (条件1):    if (条件2):        语句块1    elif (条件2):        语句块2--elif (条件n):    语句块n--else: 

R中的运算符,条件语句,控制语句

1.运算符 算术运算符:+,-,*,/ 关系运算符:==,!=,>,>=,<,<= 逻辑运算符:&,|,&&,||,! &和|称为短逻辑符,&&及||称为长逻辑符.长逻辑符只比较左边和右边的第一个元素,而短逻辑符将会一 一比较所有的元素. 2.条件语句:if ..else if(boolean_expression) { statement(s) } else{ statement(s)}或多个条件 if(boolean_expres

js中的条件语句

1 //js中的条件语句 2 3 var age=60; 4 5 6 //example1 单分支语句 7 if(age>30){ 8 console.log("你已经不年轻了!"); 9 }else{ 10 console.log("你依然很有活力!"); 11 } 12 13 14 //example2 多分子语句 当程序执行到第一个满足条件的情况下就不再往下判断 15 16 if(age>40&&age<=60){ 17 co

Python成长之路第一篇(4)_if,for,while条件语句

有了以上的基本基础,已经上面写的几个小练习,大家肯定有很多的不满,比如查询为什么查询一次就退出了呢?下面我们来学习条件语句 一.万恶的加号 以前我们在print的时候如果要加上变量都有是使用+来作为连接,但是这样做是不好的 因为在使用加号的时候,会在内存中开辟新的内存地址来存放新的内容这样做的坏处就是增加了内存的消耗 那么我们该怎么办呢? (1)字符串格式化 ①内置占位符 Python 支持格式化字符串的输出 .尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符