条件语句
if(条件表达式)
动作1
else if(条件表达式)
动作2
else
动作3
循环语句
while循环
while(条件表达式)
动作
do while语句
do
动作
while(条件表达式)
for循环语句
for(初始化计数器;测试计数器;计数器变更)
动作
条件语句示例:
打印$3大于 50的全行
$ awk 'BEGIN{FS=":"}{if($3>50) print $0}' passwd
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
if > &&< 区间条件
$ awk 'BEGIN{FS=":"}{if($3>50 && $3<105) print $0}' passwd
systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false
小于30的UUID
$ awk 'BEGIN{FS=":"}{if($3<50) printf "%-10s%s%d\n",$1,"小于50的UUID : ",$3}' passwd
root 小于50的UUID : 0
daemon 小于50的UUID : 1
if () else if {}
$ awk 'BEGIN{FS=":"}{ if($3<50) { printf "%-10s%s%d\n",$1,"小于50的UUID : ",$3} else if($3>100) { printf "%-10s%s%d\n",$1,"大于100的UUID : ",$3 } }' passwd
root 小于50的UUID : 0
.....
nobody 大于100的UUID : 65534
执行文件格式
将命令写入到script.awk文件中
BEGIN{
FS=":"
}
{
if($3<50)
{
printf "%-10s%s%d\n",$1,"小于50的UUID : ",$3
}
else if($3>100)
{
printf "%-10s%s%d\n",$1,"大于100的UUID: ",$3
}
}
执行 awk -f script.awk passwd
awk -f script.awk passwd
root 小于50的UUID : 0
nobody 大于100的UUID: 65534
循环语句示例:
while循环 执行语句 awk -f while.awk (文件内容如下)
BEGIN{
while(i<=100)
{
sum+=i
i++
}
print sum
}
for循环 执行语句 awk -f for.awk (文件内容如下)
BEGIN{
for(num=0;num<=100;num++)
{
i+=num
}
print i
}
cat do-while循环 执行语句 awk -f do-while.awk(文件内容如下)
BEGIN{
do
{
m+=i
i++
}while(i<=100)
print m
}