shell編程19 awk高級用法 變量賦值 一定要學會

AWK C語言 文章 技術 羊崽 2017-04-28

標題本來字數就不多 準備去掉【羊崽學堂】,讓標題能更好的將文章內容含義展示給大家

除了awk的內置變量,awk還可以自定義變量

統計/etc/passwd的賬戶人數

awk '{count++;print $0;} END {print "user count is ", count}' /etc/passwd

count是自定義變量。之前的action{}裡都是隻有一個print,其實print只是一個語句,而action{}可以有多個語句,以;號隔開。

這裡沒有初始化count,雖然默認是0,但是妥當的做法還是初始化為0:

awk 'BEGIN {count=0;print "[start]user count is ", count} {count=count+1;print $0;} END {print "[end]user count is ", count}' /etc/passwd

統計某個文件夾下的文件佔用的字節數

ls -l | awk 'BEGIN {size=0;} {size=size+$5;} END {print "[end]size is ", size}'

如果以M為單位顯示:

ls -l | awk 'BEGIN {size=0;} {size=size+$5;} END {print "[end]size is ", size/1024/1024,"M"}'

條件語句:

統計某個文件夾下的文件佔用的字節數,過濾4096大小的文件(一般都是文件夾):

ls -l | awk 'BEGIN {size=0;print "[start]size is ", size} {if($5 != 4096){size=size+$5;}} END {print "[end]size is ", size/1024/1024,"M"}'

循環語句:

awk中的循環語句同樣借鑑於C語言,支持while、do/while、for、break、continue,這些關鍵字的語義和C語言中的語義完全相同

數組:

因為awk中數組的下標可以是數字和字母,數組的下標通常被稱為關鍵字(key)。

值和關鍵字都存儲在內部的一張針對key/value應用hash的表格裡。

由於hash不是順序存儲,因此在顯示數組內容時會發現,它們並不是按照你預料的順序顯示出來的。數組和變量一樣,都是在使用時自動創建的,awk也同樣會自動判斷其存儲的是數字還是字符串。

一般而言,awk中的數組用來從記錄中收集信息,可以用於計算總和、統計單詞以及跟蹤模板被匹配的次數等等。

顯示/etc/passwd的賬戶

awk -F ':' 'BEGIN {count=0;} {name[count] = $1;count++;}; END {for (i = 0; i < NR; i++) print i, name[i]}' /etc/passwd

shell編程19 awk高級用法 變量賦值 一定要學會

這東西就是個自我學習的過程,寫的時候自己也是重新學習了一下,記得更深。

喜歡的朋友就關注我吧

【羊崽】【科技】【編程】

相關推薦

推薦中...