awk if语句

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

格式

if (表达式 )  {
  语句;语句;...
}

范例

$ awk  '{if($6 > 50) print $1 "Too high"}' filename

说明:在if操作块中对表达式进行测试。如果第6个字段的值大于50,就执行打印语句。由于跟在表达式后面的是单条语句,所以不需要加花括号(filename代表输入文件)。

范例

$ awk  '{if($6 > 20 && $6 <=50) {safe++;print "OK"}}' filename

说明:在if操作块中测试表达式。如果第6个字段的值大于20并且小于50,就要将表达式后面的那些语句作为一个块来执行,因此,必须用花括号把它们括起来。


if/else 语句
if/else语句实现双路判断。如果关键字if后面的表达式为真,就执行与该表达式关联的语句块。如果这个表达式的运算结果为假或0,则执行关键字else后面的语句块。如果if或else包含多条语旬,就必须用花括号把它们合成一个语句块。

格式

if (表达式 )  {
  语句;语句;...
}  else  {
  语句;语句;...
}

范例

$ awk  '{if($6 > 50) {print $1 " Too high";} else {print "Range is OK";}}' filename

说明:如果第一个表达式为真,即第6个字段($6)的值大于50 ,则print函数打印第1个字段和字符串"Too high"。否则就执行else后的语句,打印字符串"Range is OK"。

范例

$ awk  '{if($6 > 50) {count++;print $3;} else {x+5;print $2;}}' filename

说明:如果第一个表达式为真,即第6个字段($6)的值大于50,则执行表达式后面的这个语句块。否则就执行else后面的那个语句块。注意,语句块必须括在花括号中。


if/else和else if语句
if/else和else if语句提供了多路判断功能。如果跟在关键字if后的表达式为真,则执行与该表达式关联的语句块,同时,程序的控制流将跳到与最后一个else关联的最后一个右花括号后,从这个位置继续往下行。否则,控制转到else if测试与其关联的表达式。如果第一个else if的条件为真,则执行对应表达式后的语句。如果else if 的条件表达式都不为真,控制就转到else语句。这个else被称作默认操作,因为只要其他语句都不为真,就执行该else块。

格式

if (表达式 )  {
  语句;语句;...
}  else  if (表达式 )  {
  语句;语句;...
}  else  if (表达式 )  {
  语句;语句;...
}  else  {
  语句;语句;...
}

范例

$ awk  {
   if ( $3  >  89  &&  $3  < 101 ) Agrade ++
   else  if ( $3  >  79 ) Bgrade ++
   else  if ( $3  >  69 ) Cgrade ++
   else  if ( $3  >  59 ) Dgrade ++
   else Fgrade ++
}END {
  print  "The number of failures is "Fgrade
} filename

说明
1. if语句是一个操作,因此必须用花括号括起来。表达式的计算是从左向右进行。如果第一个表达式为假,则整个表达式为假。如果第一个表达式为真,则计算符号逻辑与(&&)后面的那个表达式。如果整个表达式为真,则变量Agrade加1。
2. 如果关键字if后面的表达式值为假,就测试这个else if的表达式。如果该表达式的值为真,就执行它后面的语句。也就是说,如果第3个字段($3)的值大于79,则变量Bgrade加1。
3. 如果头两个条件语句都为假,就测试这个else if 表达式,如果第3个字段($3)的值大于69,则将变量Cgrade加1。
4. 如果头三个条件语句都为假,就测试这个else if表达式,如果第3个字段($3)的值大于59,则将变量Dgrade 加1。
5. 如果上面的表达式都不为真,就执行else块,将变量Fgrade加1。接下来的花括号将结束整个操作块。

你可能感兴趣的:(awk教程,awk,awk,if语句,awk命令)