條件語句
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
}