我想从标准输入读取数据并为每个解析的行执行一个 shell 命令并恢复其输出。
这是一个几乎可以工作的例子:
[root@eulbi002] # ping eulbi001 | awk -F'[ =]' '/64 bytes/{"date +%s"|getline D; print D,$11}'
1360069298 0.056
1360069298 0.051
1360069298 0.051
命令 'date +%s' 被执行,我可以恢复输出,但在我看来,执行只发生一次,而不是在每场比赛中。
最终目的是将输出交给 rrdtool 进行存储,而 rrdtool 想要每条记录的时间戳。
@Ed Morton 除了指出一个可行的解决方案外,还提到了 gawk 及其内置的时间功能。这是最优雅的解决方案。
[root@eulbi002] # ping eulbi001 | awk -F'[ =]' '/64 bytes/{print systime(),$11}'
1360069298 0.056
1360069298 0.051
1360069298 0.051