国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
awk調(diào)用shell命令

在awk內(nèi)部可利用管道和getline函數(shù)來調(diào)用shell命令,并可得到返回的具體結(jié)果,進(jìn)行相應(yīng)處理。例子如下:

1) { 

       while ( ("ls" | getline) >0 )

           print

   }

    輸出當(dāng)前目錄下的所有文件,并打印到標(biāo)準(zhǔn)輸出上。| 是管道,getline依次得到每一行的輸出,賦值給$0,print打印到標(biāo)準(zhǔn)輸出上

2) 如果希望將輸出賦值到另外一個變量中,而不是覆蓋$0,可這樣改寫:

   { 

      while ( ("ls" | getline name) >0 )

          print name

   }

3) system命令可以把awk內(nèi)部的變量傳遞到外面使用,比如:

    {

        system("echo ", $1)

    }

打印$1的內(nèi)容

 

 

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

其語法如下 : 

語法                                由何處讀取數(shù)據(jù)          數(shù)據(jù)讀入后置于

getline   var < file            所指定的 file               變量 var(var省略時,表示置于$0)

getline   var                     pipe 變量                    變量 var(var省略時,表示置于$0) 

 

getline 一次讀取一行數(shù)據(jù), 若讀取成功則return 1, 若讀取失敗則return -1, 若遇到文件結(jié)束(EOF), 則return 0; 

本程序使用 getline 所 return 的數(shù)據(jù)來做為 while 判斷循環(huán)停止的條件,某些awk版本較舊,并不容許使用者改變 $0 之值. 這種版的 awk 執(zhí)行本程序時會產(chǎn)生 Error, 讀者可于 getline 之后置上一個變量 (如此, getline 讀進(jìn)來的數(shù)據(jù)便不會被置于 $0 ), 或直接改用gawk便可解決.

 

 

awk 提供與 UNIX 用法近似的 pipe, 其記號亦為 "|". 其用法及含意如下 : 

awk程序中可接受下列兩種語法: 

[a. 語法] awk output 指令 | "Shell 接受的命令" 

( 如 : print $1,$2 | "sort -k 1" ) 

[b. 語法] "Shell 接受的命令" | awk input 指令 

( 如 : "ls " | getline) 

注 : awk input 指令只有 getline 一個. 

awk output 指令有 print, printf() 二個.

 

在a 語法中, awk所輸出的數(shù)據(jù)將轉(zhuǎn)送往 Shell , 由 Shell 的命令進(jìn)行處理.以上例而言, print 所輸出的數(shù)據(jù)將經(jīng)由 Shell 命令 "sort -k 1" 排序后再送往屏幕(stdout). 

上列awk程序中, "print$1, $2" 可能反復(fù)執(zhí)行很多次, 其輸出的結(jié)果將先暫存于 pipe 中,等到該程序結(jié)束時, 才會一并進(jìn)行 "sort -k 1". 

須注意二點 : 不論 print $1, $2 被執(zhí)行幾次, "sort -k 1" 的執(zhí)行時間是 "awk程序結(jié)束時", "sort -k 1" 的執(zhí)行次數(shù)是 "一次". 

 

在 b 語法中, awk將先調(diào)用 Shell 命令. 其執(zhí)行結(jié)果將通過 pipe 送入awk程序,以上例而言, awk先讓 Shell 執(zhí)行"ls",Shell 執(zhí)行后將結(jié)果存于 pipe, awk指令 getline再從 pipe 中讀取數(shù)據(jù). 

使用本語法時應(yīng)留心: 以上例而言,awk "立刻"調(diào)用 Shell 來執(zhí)行 "ls", 執(zhí)行次數(shù)是一次. 

getline 則可能執(zhí)行多次(若pipe中存在多行數(shù)據(jù)). 

除上列 a, b 二中語法外, awk程序中其它地方如出現(xiàn)像 "date", "cls", "ls"... 這樣的字符串, awk只把它當(dāng)成一般字符串處理

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
AWK詳細(xì)用法
awk調(diào)用shell命令與getline和system函數(shù)
當(dāng)Shell遇上了NodeJS
linux命令終極系列(awk
Unix awk使用手冊
第三章 Linux基本命令
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服