- IF条件判断
语法一
if (表达式)
动作1
else
动作2
语法二
if (表达式) 动作1;else 动作2
#判断boot分区可用容量小于20MB时报警,否则显示OK
df |grep ‘boot‘ |awk ‘{if($4<20000) print "Alart";else print "OK"}‘
- while循环
语法一
while (条件)
动作
例子:
x=1
while (i<10){
print $1
}
例子:
awk ‘i=1{} BEGIN { while(i<=10) {++i;print i} }‘ test.txt
语法二
do
动作
while(条件)
例子:
awk ‘BEGIN { do {++x;print x} while (x<=10) }‘ test.txt
- for循环
for (变量; 条件;计数器)
动作
例子:
awk ‘BEGIN {for(i=1;i<=10;i++) print i}‘ test.txt
awk ‘BEGIN {for(i=10;i>=1;i--) print i}‘ test.txt - Break与continue
break 跳出循环
continue 终止当前循环
for (i=1;i<=10;i++) {
if (i=5)
continue
print i
}
for (i=1;i<=10;i++) {
if (i=5)
break
print i
}
- 函数
5.1 rand()函数
awk ‘BEGIN{print rand();print srand();print srand()}‘ test.txt
5.2 gsub(x,y,z)函数
作用在字符串z中使用字符串y替换与正则表达式x相匹配所有字串,z默认为$0
awk -F: ‘gsub(/root/,"ccc",$0) {print $0}‘ /etc/passwd
ccc:x:0:0:ccc:/ccc:/bin/bash5.3 sub(x,y,z)函数
作用在字符串z中使用字符串y替换与正则表达式x相匹配的第一个字串,z默认为$0
awk -F: ‘sub(/ccc/,"root",$0) {print $0}‘ /etc/passwd
ccc:x:0:0:ccc:/ccc:/bin/bash5.4 length(z)函数
作用:显示test.txt文档中每行的字符长度:
awk ‘{print length()}‘ /usr/local/src/allen/test.txt
5.5 getline()函数
df -h | awk ‘{if(NF==1) {getline;print $3};if(NF==6) print $4}‘
df -h|awk ‘BEGIN{print "Disk Free:"} \
{if(NF==1) {getline;print $3};if(NF==6){print $4}}‘
awk高级应用