这是我尝试从Zsh脚本评估的一些命令的摘录:
cmd="ping -qc 3 -W 5 8.8.8.8 | xargs -0d '\n' awk -f presetup/testping.awk 2>&1"
print -r ${cmd}
output=$(eval ${cmd})
print ${output}
我不知道自己缺少什么,但是,我要做的就是用单个awk脚本处理ping的stderr和stdout。这是我得到的输出:
awk: presetup/testping.awk:6: fatal: cannot open file `PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.' for reading (No such file or directory)
该程序应该解析ping命令的每条输出行,并与正则表达式匹配其输出。关于我所缺少的任何想法吗?
答案 0 :(得分:-1)
非常感谢您为我指明正确的方向@karakfa。似乎正确的方法如下:
ping -qc 3 -W 5 8.8.8.8 | 2>&1 awk -f presetup/testping.awk -
更正,将stderr重定向到stdout,然后将stdout管道传输到awk:
ping -qc 3 -W 5 8.8.8.8 2>&1 | awk -f presetup/testping.awk
OR:
ping -qc 3 -W 5 8.8.8.8 |& awk -f presetup/testping.awk
谢谢@tripleee!