天天看點

awk學習筆記(11) - 與shell聯用

在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,如需轉載請自行聯系原作者