24 - awk流程控制

if语句

  • 单分支if判断

awk '指令' 文件

$ awk -F: '{if($3>=1000){i++}} END{print i}' /etc/passwd
1

$ awk -F: '{if($1=="root"){i++}} END{print i}' /etc/passwd
1

$ uptime | awk '{if($NF>0.01){print "CPUload:"$NF}}'
CPUload:0.35
  • 双分支if判断
    • awk '{指令}' 文件
$ awk -F: '{if($3>=1000){i++}else{j++}} END{print "普通用户:"i,"系统用户:"j}' /etc/passwd
普通用户:1 系统用户:18

$ ls -l /etc | awk '{if($1~/^-/){x++} else {y++}}END {print "普通文件个数:"x,"目录个数:"y}'
普通文件个数:83 目录个数:91

$ ls -l /etc | awk '{if($1~/^-/){x++}else if($1~/^d/){y++}else{z++}} END{print "普通文件个数:"x,"目录个数:"y,"其他个数:"z}'
普通文件个数:83 目录个数:74 其他个数:17

for循环

  • awk的for循环采用与C语言一样的语法格式
    • for(表达式1;表达式2;表达式3){指令}
$ awk 'BEGIN {for (i=1;i<=5;i++){print i}}'
1
2
3
4
5

$ awk 'BEGIN {for (i=5;i>=1;i--){print i}}'
5
4
3
2
1

小结

  • 单分支:if(条件){指令}
  • 双分支:if(条件){指令}else{指令}
  • 多分支:if(条件){指令}else if(条件){指令}... ...else{指令}
  • for循环:for(表达式1;表达式2;表达式3){指令}

你可能感兴趣的:(24 - awk流程控制)