22、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.ddkk.com]$ 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.ddkk.com]$ 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.ddkk.com]$ 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