AWK控制语句
{ statements;… } 组合语句
if(condition) {statements;…}
if(condition) {statements;…} else {statements;…}
while(conditon) {statments;…}
for(expr1;expr2;expr3) {statements;…}
for(i in arry){for body}
break
continue
next
if语句
-
语法:
- if(condition){statement;…}[else statement]
- if(condition1){statement1}else if(condition2){statement2}else{statement3} 使用场景:
- 对awk取得的整行或某个字段做条件判断
eg:
awk -F: '{if($3>=1000)print $1,$3}' /etc/passwd
awk -F: '{if($NF=="/bin/bash") print $1}' /etc/passwd
awk '{if(NF>5) print $0}' /etc/fstab
df -h | awk -F% '/^\/dev/{print $1}'|awk '$NF>=80{print $1,$5}'
while循环
-
语法:
-
while(condition){statement;…}
条件“真”,进入循环;条件“假”, 退出循环 使用场景:
-
对一行内的多个字段逐一类似处理时使用
对数组中的各元素逐一处理时使用
eg:
awk '/^[[:space:]]*linux16/{i=1;while(i<=NF){print $i,length($i); i++}}' /etc/grub2.cfg
awk '/^[[:space:]]*linux16/{i=1;while(i<=NF) {
if(