AWK程式中使用Shell命令

2021-10-07 11:04:03 字數 1183 閱讀 3293

awk程式中允許呼叫shell指令,並提供管道解決awk與系統間資料傳遞的問題。所以awk很容易使用系統資源,讀者可利用這個特點來編寫某些適用的系統工具。

範例:寫乙個awk程式來列印出線上人數。

將下列程式建檔案,命名為 count.awk

begin

並執行下列命令:   

$ awk -f count.awk

說 明:

1. awk 程式並不一定要處理資料檔案,以本例而言,僅輸入程式檔案count.awk,未輸入任何資料檔案。

2. begin 和 end 同為awk中的一種 pattern。以 begin 為 pattern的actions,只有在awk開始執行程式、尚未開啟任何輸入檔案前, 被執行一次。(注意:只被執行一次)

3. "|" 為 awk 中表示管道的符號。awk 把 管道 之前的字串"who"當成shell上的命令,並將該命令送往shell執行,執行的結果(原先應列印在螢幕上的)則通過pipe送進awk程式中。

4. getline為awk所提供的輸入指令。

其語法如下:

語法由何處讀取資料

資料讀入後置於

getline var < file

所指定的 file

變數 var(var省略時,表示置於$0)

| getline var

pipe 

變數 var(var省略時,表示置於$0)

getline var

見 註一

變數 var(var省略時,表示置於$0)

註一:當 pattern 為 begin 或 end 時,getline 將由 stdin 讀取資料,否則由awk正處理的資料檔案上讀取資料。

getline一次讀取一行資料,若讀取成功則return 1;

若讀取失敗則return -1;

若遇到檔案結束(eof),則return 0。

本程式使用 getline 所 return 的資料來做為 while 判斷迴圈停止的條件,某些awk版本較舊,並不容許使用者改變 $0 的值。這種版的 awk 執行本程式時會產生 error,讀者可於 getline 之後置上乙個變數 (如此,getline 讀進來的資料便不會被置於 $0 ),或直接改用gawk便可解決。

awk 程式中使用 Shell 命令

a.語法 awk output 指令 shell 接受的命令 如 print 1,2 sort k 1 b.語法 shell 接受的命令 awk input 指令 如 ls getline 注 awk input 指令只有 getline 乙個.awk output 指令有 print,printf...

awk中使用shell變數

其實在awk裡,是不能直接使用shell變數的 方法是 awk v 選項讓awk 裡使用shell變數 time 60 awk v time time begin 這樣要注意 在awk裡,time不能加 符號。網上說如下方法都可行 一 var 這種寫法大家無需改變用 括起awk程式的習慣,是老外常用...

awk中使用shell變數

1 通過命令列引數定義變數時引用 awk v awk變數名 shell變數名 bin bash var4bash test awk v var4awk var4bash begin 2 在awk中直接引用,使用 var 注意使用前格式必須是先用單引號括住再用雙引號括住 bin bash var te...