shell腳本--文本處理三劍客之awk動作中的條件及循環語句

條件語句

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
		
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章