4 Awk If 语句示例(if、if else、if else if、)
在本 awk 教程中,让我们通过实际示例了解awk 条件 if 语句。
awk 支持很多条件语句来控制程序的流程。大多数 Awk 条件语句语法看起来像“C”编程语言。
通常条件语句在执行任何操作之前检查条件。如果条件为真,则执行动作。如果条件为假,则可以执行类似的操作。
条件语句以名为“if”的关键字开头。awk 支持两种不同的 if 语句。
- awk 简单的 if 语句
- awk If-Else 语句
- awk If-ElseIf-Ladder
awk 简单的 if 语句
单一动作:简单的If语句用于检查条件,如果条件返回真,则执行相应的动作。
Syntax:
if (conditional-expression)
action
- if 是关键字
- 条件表达式——检查条件的表达式
- action - 任何执行操作的 awk 语句。
多重动作:如果条件表达式返回真,那么将执行动作。如果需要执行多个操作,则应将这些操作括在花括号中,并将它们分隔成一个新行或分号,如下所示。
Syntax:
if (conditional-expression)
{
action1;
action2;
}
如果条件为真,则括号中的所有操作都将按照给定的顺序执行。执行完所有操作后,它会继续执行下一条语句。
awk if else 语句
在上述简单的 awk If 语句中,如果条件为假,则没有任何操作集。在 awk If Else 语句中,您可以给出条件为假时要执行的操作列表。如果条件返回 true,则执行 action1,如果条件为 false,则执行 action 2。
Syntax:
if (conditional-expression)
action1
else
action2
awk 也有条件运算符,即三元运算符(?:),其功能类似于 awk If Else 语句。如果条件表达式为真,则执行 action1,如果条件表达式为假,则执行 action2。
Syntax:
conditional-expression ? action1 : action2 ;
awk If Else If 阶梯
if(conditional-expression1)
action1;
else if(conditional-expression2)
action2;
else if(conditional-expression3)
action3;
.
.
else
action n;
- 如果条件表达式 1 为真,则将执行 action1。
- 如果条件表达式 1 为假,则将检查条件表达式 2,如果为真,则执行动作 2 并像这样继续。如果条件表达式都不为真,则将执行最后一个 else 部分。
现在让我们创建包含学生分数的示例输入文件。
$cat student-marks
Jones 2143 78 84 77
Gondrol 2321 56 58 45
RinRao 2122 38 37
Edwin 2537 87 97 95
Dayan 2415 30 47
1. awk If 示例:检查所有标记是否存在
$ awk '{
if ($3 =="" || $4 == "" || $5 == "")
print "Some score for the student",$1,"is missing";'
}' student-marks
Some score for the student RinRao is missing
Some score for the student Dayan is missing
3 美元、4 美元和 5 美元是学生的考试成绩。如果测试分数等于空,则抛出该消息。|| 操作员是检查任何一个标记不存在,它应该警报。
2. Awk If Else 示例:根据每个科目的学生分数生成通过/失败报告
$ awk '{
if ($3 >=35 && $4 >= 35 && $5 >= 35)
print $0,"=>","Pass";
else
print $0,"=>","Fail";
}' student-marks
Jones 2143 78 84 77 => Pass
Gondrol 2321 56 58 45 => Pass
RinRao 2122 38 37 => Fail
Edwin 2537 87 97 95 => Pass
Dayan 2415 30 47 => Fail
Pass 的条件是所有的测试分数应该大于或等于 35。所以如果大于 35 则检查所有测试分数,然后打印整行和字符串“Pass”,否则即即使任何一个测试分数不满足条件,打印整行并打印字符串“Fail”。
3. Awk If Else If 示例:找出每个学生的平均成绩和成绩
$ cat grade.awk
{
total=$3+$4+$5;
avg=total/3;
if ( avg >= 90 ) grade="A";
else if ( avg >= 80) grade ="B";
else if (avg >= 70) grade ="C";
else grade="D";
print $0,"=>",grade;
}
$ awk -f grade.awk student-marks
Jones 2143 78 84 77 => C
Gondrol 2321 56 58 45 => D
RinRao 2122 38 37 => D
Edwin 2537 87 97 95 => A
Dayan 2415 30 47 => D
在上面的 awk 脚本中,名为 'avg' 的变量具有三个测试分数的平均值。如果平均分大于或等于90,则为A,如果平均大于或等于80,则为B,如果平均大于或等于70,则为C。或否则等级为 D。
4. awk 三进制 (?:) 示例:用逗号连接每 3 行输入。
$ awk 'ORS=NR%3?",":"\n"' student-marks
Jones 2143 78 84 77,Gondrol 2321 56 58 45,RinRao 2122 38 37
Edwin 2537 87 97 95,Dayan 2415 30 47,
在获得输出的每一行之后都会附加此变量。在此示例中,它在每 3 行从逗号更改为换行符。第 1、2 行是逗号,第 3 行是换行符,第 4、5 行是逗号,第 6 行是换行符,依此类推。
- 点赞
- 收藏
- 关注作者
评论(0)