linux awk執行shell命令,awk調用shell命令

在awk內部可利用管道和getline函數來調用shell命令,并可得到返回的具體結果,進行相應處理。例子如下:

1) {

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

print

}

輸出當前目錄下的所有文件,并打印到標準輸出上。| 是管道,getline依次得到每一行的輸出,賦值給$0,print打印到標準輸出上

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

{

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

print name

}

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

{

system("echo ", $1)

}

打印$1的內容

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

其語法如下 :

語法 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?由何處讀取數據 ? ? ? ? ?數據讀入后置于

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

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

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

本程序使用 getline 所 return 的數據來做為 while 判斷循環停止的條件,某些awk版本較舊,并不容許使用者改變 $0 之值. 這種版的 awk 執行本程序時會產生 Error, 讀者可于 getline 之后置上一個變量 (如此, getline 讀進來的數據便不會被置于 $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所輸出的數據將轉送往 Shell , 由 Shell 的命令進行處理.以上例而言, print 所輸出的數據將經由 Shell 命令 "sort -k 1" 排序后再送往屏幕(stdout).

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

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

在 b 語法中, awk將先調用 Shell 命令. 其執行結果將通過 pipe 送入awk程序,以上例而言, awk先讓 Shell 執行"ls",Shell 執行后將結果存于 pipe, awk指令 getline再從 pipe 中讀取數據.

使用本語法時應留心: 以上例而言,awk "立刻"調用 Shell 來執行 "ls", 執行次數是一次.

getline 則可能執行多次(若pipe中存在多行數據).

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/443532.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443532.shtml
英文地址,請注明出處:http://en.pswp.cn/news/443532.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux添加啟動腳本文件夾,linux – 將腳本中的符號鏈接添加到rc.d文件夾中以在系統啟動期間啟動進程...

我正在使用fedora 15.我試圖添加MYSql守護進程在系統strtup期間啟動.我已經明白我必須將它添加到rc5.d,因為它是默認目標&是graphical.target.來自inittab&#xff1a;systemd uses ‘targets’ instead of runlevels. By default, there are two main targets:multi-user.…

org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException:

一&#xff1a;今天在使用struts2做文件上傳時出現了該異常&#xff1a; 警告: Unable to parse request org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (5897994) exceeds the configured maximum (2…

linux天氣軟件,類似智能手機!Linux中安裝Conky天氣插件

如今&#xff0c;智能手機中很多都安裝相匹配外觀的天氣小插件&#xff0c;而對于喜歡操作系統平臺的用戶而言&#xff0c;可以在你的Linux桌面中擁有像智能手機一樣的天氣外觀。通過Flair Weather Conky可以將使用一個GUI工具Conky Manager在Linux中輕松地管理Conky。這里介紹…

linux go 安裝路徑,在Alpine Linux D的路徑中找不到已安裝的Go二進制文件

我有一個Go二進制文件&#xff0c;試圖在Alpine Docker映像上運行。這對于Docker Go二進制文件很好用。docker run -it alpine:3.3 shapk add --no-cache curlDOCKER_BUCKETget.docker.comDOCKER_VERSION1.9.1curl -fSL "https://${DOCKER_BUCKET}/builds/Linux/x86_64/do…

linux安裝下載中文包,linux下安裝中文包和字體

在虛擬機中使用中文輸入法和中文顯示使用的是rhel5的鏡像我把其鏡像掛載在/mnt/cdrom中&#xff0c;然后切換到/Server目錄下&#xff0c;安裝支持中文字體Mount /dev/cdrom /mnt/cdromCd /mnt/cdrom/serverrpm -ivh fonts-chinese-3.02-9.6.el5.noarch.rpmrpm -ivh fonts-ISO8…

Java-Jdbc,JDBC連接Oracle11g實例:

很長時間沒用Oracle數據庫了&#xff0c;今天在公司的電腦上裝了一個Oracle11g&#xff0c;安裝完成后&#xff0c;順便寫了個簡單的Jdbc連接Oracle的例子&#xff0c;現在記錄一下&#xff0c;方便以后查看&#xff1a; 例子很簡單&#xff0c;直接上代碼&#xff1a; (注意&…

linux無桌面重做系統,Linux不需要重做系統

感謝hsyyf的投遞但從系統構架上來講&#xff0c;總所周知&#xff0c;Linux的穩定性遠大于windows&#xff0c;單純的使用不會引起系統的損壞。當不進行危險操作時&#xff0c;例如執行sudo rm-rf/*之類的命令&#xff0c;或者混用分區工具&#xff0c;是不會引起各種徹底性損壞…

linux遠程連接工具putty使用方法,linux遠程登陸工具putty使用

#putty工具百度下載即可&#xff0c;最好從官網下。安裝時&#xff0c;除安裝位置外&#xff0c;其余默認即可。1、使用命令ifconfig命令&#xff0c;記下eth0的IP&#xff0c;我的是192.168.1.1692、打開putty&#xff0c;并將查到的ip寫在圖中位置&#xff0c;下側的Saved Se…

linux來源usb驅動在哪下載,Linux USB驅動程序基礎

非常好的linux驅動入門,介紹詳盡Linux USB驅動程序基礎來源: ChinaUnix博客日期&#xff1a;2008.04.10 23:55(共有條評論) 我要評論(Linux USB Driver BasicsIntroductionDrivers are software components that operating systems use to providehardware specific services t…

linux中ss實現原理,ss 詳解

ss用來顯示處于活動狀態的套接字信息。ss命令可以用來獲取socket統計信息&#xff0c;它可以顯示和netstat(參考https://www.jianshu.com/p/7630474c39b1)類似的內容。但ss的優勢在于它能夠顯示更多更詳細的有關TCP和連接狀態的信息&#xff0c;而且比netstat更快速更高效。當服…

Hibernate3.X實現基于CLOB字段類型的注解方式:

一&#xff1a;Hibernate3.X實現基于CLOB字段類型的注解方式的例子&#xff1a;下面直接上代碼&#xff1a; 二&#xff1a;UserInfo.java package cn.gov.csrc.cms.model;import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity;…

linux mint安裝步驟,Linux mint 安裝步驟

##Linux mint 安裝步驟##家里的筆記本以前一直用Deepin系統&#xff0c;但是Deepin系統的wifi實在是太慢了。還有就是啟動軟件是有時候總沒響應&#xff0c;卡死機。 最近重裝系統&#xff0c;選擇了mint ,在這里記錄下安裝步驟。###1.制作U盤啟動盤###下載iso文件&#xff0c;…

linux 商業游戲,Ubuntu下安裝試玩原生Linux版商業游戲Braid

這款原生Linux版商業游戲Braid國外出售價大約在80美元左右。每年在Linux平臺上發布的原生商業游戲是屈指可數&#xff0c;而且這些游戲的質量也是參差不齊。不過這款原生Linux版商業游戲Braid還是值得一玩的&#xff0c;這款Braid游戲創意十足&#xff0c;您可以通過拼圖和時間…

linux centos 7 crontab 啟動,CentOS 7 Linux執行crontab 計劃任務實操 - 好應網

[inlosc_lg_title]一、環境準備[/inlosc_lg_title]yum install vixie-cron #安裝定時任務插件yum install crontabs #安裝定時任務crontabs/bin/systemctl restart crond.service #啟動服務/bin/systemctl reload crond.service #重新載入配置/bin/systemctl status crond.serv…

變量的初始化與使用C語言程序注釋,c - (為什么)使用未初始化的變量未定義行為?...

C標準為編譯器提供了很大的優勢來執行優化。 如果您假設一個簡單的程序模型&#xff0c;其中未初始化的內存被設置為某個隨機位模式&#xff0c;并且所有操作都按照它們的寫入順序執行&#xff0c;那么這些優化的后果可能會令人驚訝。注意&#xff1a;以下示例僅有效&#xff0…

三羊獻瑞c語言編程入門,藍橋杯-三羊獻瑞,

藍橋杯-三羊獻瑞&#xff0c;更多精彩文章請關注公眾號『大海的BLOG』問題觀察下面的加法算式&#xff1a;祥 瑞 生 輝 三 羊 獻 瑞----------------三 羊 生 瑞 氣其中&#xff0c;相同的漢字代表相同的數字&#xff0c;不同的漢字代表不同的數字&#xff0c;‘三’和‘祥’不…

Struts2.3接收post方式提交的表單參數的方式

一&#xff1a;方式一&#xff1a;通過request來獲取&#xff0c;首先讓action實現ServletRequestAware接口&#xff0c;然后通過request來獲取提交的參數&#xff0c;代碼如下: package cn.gov.csrc.flight.action;import java.util.HashMap; import java.util.List; import j…

倒果汁c語言,水果榨汁補維生素C?這些補維生素的錯誤別再犯了

原標題&#xff1a;水果榨汁補維生素C&#xff1f;這些補維生素的錯誤別再犯了蔬菜和水果作為維生素C、礦物質和植物纖維的重要來源&#xff0c;是每天餐桌上都要出現的食物&#xff0c;一旦水果蔬菜吃不夠&#xff0c;身體就會開始找你麻煩。在處理蔬菜水果的時候&#xff0c;…

dos和linux有關系嗎,DOS和Linux近年來的發展比較

大家都聽說過Linux操作系統吧&#xff01;Linux誕生于20世紀的90年代初&#xff0c;于90年代末開始出名并在許多人中開始了實際使用。著名的“開放源代碼”運動更是使新的Linux程序不斷出現&#xff0c;使Linux得到了進一步的發展&#xff0c;尤其是在服務器領域得到了較大的應…

c語言中二維數組的結構體,怎么才能把結構體里面的二維數組打印出來?

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓萌新一位&#xff0c;學到結構體在做作業&#xff0c;遇到了這個問題。求提示出現這樣的報錯&#xff1a;[Error] cannot convert char (*)[20] to char* for argument 5 to void HeroShow(int, int, char*, char*, char*, char*)#…