AWK - 条件判断
AWK 脱胎于 C 语言,自然也有着 C 语言的影子。
从某些方面说,与其他编程语言一样,AWK 提供条件语句来控制程序的流程。
不过 AWK 中的条件判断语言比较简单,就是简单的 if
语句、if-else
语句、if-else-if
语句
if
语句
现实生活中,我们经常会说 如果...我就怎么怎么样? 的感慨。这是一种典型的条件判断。
这种条件一旦发生,就会改变我们流水似得生活,让生活有了转折点。
AWK 语言也模拟了这种条件判断,使用 if 语句来实现这种判断
AWK 中的 if
语句的语法格式如下
if (condition) action
如果有多个动作需要执行,我们可以把多个动作语句放在一对 大括号 {}
之中。
这种情况下,语法格式如下
if (condition) { action-1 action-1 . . action-n }
下面,我们使用一个范例来演示下 if
语句的使用。
范例
下面这段代码使用 if
语句检查数字是否是偶数。
[www.twle.cn]$ awk 'BEGIN {num = 10; if (num % 2 == 0) printf "%d is even number.\n", num }'
运行以上 awk 命令,输出结果如下
10 is even number.
if-else
语句
现实生活中,我们都会说 "如果 ...就怎么怎么样,否则 就怎么怎么样。"
这是一种典型的条件判断。也即是说如果条件满足,那么会执行一些动作,如果条件不满足,则执行另一些动作。
AWK 语言也模拟了这种条件判断,使用 if-else
语句来实现这种判断。
if-else
语句的语法格式如下
if (condition) action-1 else action-2
在上面这个 if-else
语句中,如果 condition
条件返回 true
值,那么 action-1
语句块会执行,但如果 condition
条件返回 false
值,那么 action-2
语句块会执行。
可能有点拗口,没事,我们用一个实例来讲解下
[www.twle.cn]$ awk 'BEGIN { num = 11; if (num % 2 == 0) printf "%d is even number.\n", num; else printf "%d is odd number.\n", num }'
运行以上 awk 命令,输出结果如下
11 is odd number.
if-else-if
梯度
AWK 中允许使用 if-else-if 梯度来完成多个条件的判断。
if-else-if 梯度本质上来说就是多个 if-else
语句。
废话不多说,我们直接上范例
[www.twle.cn]$ awk 'BEGIN { a = 30; if (a==10) print "a = 10"; else if (a == 20) print "a = 20"; else if (a == 30) print "a = 30"; }'
运行以上 awk 命令,输出结果如下
a = 30