awk可以用getline或system來呼叫shell的命令
1 getline
通過在awk內使用管道,可以把shell命令的輸出傳送給awk
$ awk 'begin'
sun mar 8 22:21:52 2009
順便說一下getline的其他用法.
getline除了可以通過管道從shell命令裡讀取資料
外,它還可以從標準輸入(用"-"指定從標準輸入讀入,或者如果命令列沒有任何輸入檔案且不用重定向符"<"指定檔案,預設也是從標準輸入讀)和檔案裡讀取數
據;如果getline後面沒有指定變數,則讀取的資料會放到$0裡面
$ awk 'begin'
hello, for note <==這一行是從鍵盤輸入的
hello, for note <==這一行是awk的print $0 輸出的
$ cat sed.test
hello
$ awk 'begin'
hello
$ awk 'begin'
hello
hello
如果讀取成功,getline返回1;如果讀到檔案結束符,getline返回0;如果發生錯誤,例如打不開檔案,getline返回-1. 所以,getline可以用於while迴圈中
$ cat grep.test
hello
myboy
third
fourth
$ awk 'begin }'
hello
myboy
third
fourth 2
system
system的呼叫形式是system(cmd).system的返回值是cmd的退出狀態.如果要獲得cmd的輸出,就要和getline結合使用
$ awk 'begin }'
total 14
-rw-r--r-- 1 administrator none 2 mar 3 20:20 4
-rw-r--r-- 1 administrator none 0 feb 28 19:49 4]]
-rw-r--r-- 1 administrator none 87 mar 5 20:22 awk.test
-rwxr-xr-x 1 administrator none 409 mar 3 22:24 bc.test
-rwxrwxrwx 1 administrator none 411 mar 3 22:23 bc.test.bak
-rw-r--r-- 1 administrator none 48 feb 21 21:06 func.test
-rw-r--r-- 1 administrator none 25 feb 27 21:37 grep.test
-rw-r--r-- 1 administrator none 6 feb 27 20:59 kk
-rw-r--r-- 1 administrator none 5 mar 8 15:11 log.test
-rw-r--r-- 1 administrator none 0 feb 27 21:22 orld
-rw-r--r-- 1 administrator none 75 mar 8 12:14 perl.test
-rw-r--r-- 1 administrator none 6 mar 6 20:22 sed.test
-rw-r--r-- 1 administrator none 12 feb 27 21:32 sed.write
sh: 0: command not found
from:
shell 六 awk命令學習
呼叫awk類似sed 目前的linux 都是用的gawk,兩者現在互相等同了。awk中的執行語句,類似c c 在shell命令輸入 awk f 域分隔符 awk 程式段 輸入檔案 awk程式段插入指令碼檔案,然後通過awk命令呼叫它awk f awk指令碼檔案 輸入檔案 通過 f 呼叫awk指令碼檔...
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 逐行掃瞄輸入 可以是檔案或管道等 awk 將讀入的記錄分割成數個字段 1 0 表示整條記錄,第乙個字段放入髮量 1 中,第二個放入髮量 2 中。2 字段分隔符可以通過選項 f 指定,否則使用預設的分隔符,通常為空格或tab。argc 命令列引數個數 實際就是輸入檔案的數目加 1 argind...