在awk程式中使用shell
例子一:取得系統目前登入人數
編寫count.awk檔案:
BEGIN {
while ( "who" | getline) n++
print n
}
執行:
awk -f count.awk
輸出:
3
我目前開着兩個指令行視窗,加上mac系統的登入數,剛好是3個
上面的程式也可以直接在指令行中寫:
awk 'BEGIN {while("who"|getline) n++;print n}'
輸出的結果是一樣的。
解釋:
who是shell指令,傳回目前登入的記錄;
getline一次取一行記錄,成功就傳回1,失敗就傳回-1;
n是變量,當成功讀取了一條記錄時就自加1;
while循環會周遊所有的登入記錄;
最後print列印出總計數n到螢幕上。
例子二:取得目前目錄的檔案總數
awk 'BEGIN {while("ls -a"|getline) n++;print n}'
51
這個例子跟上面的很像,隻是shell指令帶上了參數。
"ls -a"是列出目前目錄下的所有檔案,包含隐藏檔案;
getline取一行記錄,成功就傳回1,失敗傳回-1;
n是計數變量;
while循環所有的記錄;
print列印計數總數。
本文轉自 ustb80 51CTO部落格,原文連結:http://blog.51cto.com/ustb80/1035614,如需轉載請自行聯系原作者