我想從stdin讀取數據,併爲每個解析的行執行shell命令並恢復其輸出。awk:如何執行命令並讀取其輸出
這裏幾乎工作的例子:
[[email protected]] # ping eulbi001 | awk -F'[ =]' '/64 bytes/{"date +%s"|getline D; print D,$11}'
1360069298 0.056
1360069298 0.051
1360069298 0.051
命令「日期+%s」的執行,我可以恢復輸出,但它看起來對我來說,執行只發生一次,而不是每比賽。
最終目的是將輸出交給rrdtool進行存儲,rrdtool需要每個記錄的時間戳。
@Ed Morton,除了指出一個可行的解決方案之外,還提到了帶有內置時間函數的gawk。這是最優雅的解決方案。
[[email protected]] # ping eulbi001 | awk -F'[ =]' '/64 bytes/{print systime(),$11}'
1360069298 0.056
1360069298 0.051
1360069298 0.051
每行都會調用日期,但所有輸出都在1秒內被解析。 –
對不起,不明白你的評論。如果每行都執行日期,那麼我應該看到變量D也增加了。 –
如果每次打電話給日期,都不會發生在與上次打電話日期相同的秒鐘內。你告訴日期打印自紀元以來的秒數,因此D只會每秒更改一次,而不是每次你打電話給日期。 –