標題本來字數就不多 準備去掉【羊崽學堂】,讓標題能更好的將文章內容含義展示給大家
除了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
這東西就是個自我學習的過程,寫的時候自己也是重新學習了一下,記得更深。
喜歡的朋友就關注我吧
【羊崽】【科技】【編程】