2013-10-16 34 views
0
echo "$(time perlscript > /dev/null)" | mawk '{ print $9 }' 

返回echo的整个输出,而不是我希望的第九列。为什么?为什么awk在这里什么都不做?

+0

perlscript似乎很可能将其输出写入stderr,这就是你所看到的。 –

回答

2

如果你想要做的事与time结果,你必须子shell内包装它和重定向错误输出到标准输出如下:

$ (time sleep 0) 2>&1 | awk '{print $2}' 

0m0.006s 
0m0.000s 
0m0.000s 

因为这样的事情似乎忽略我:

$ time sleep 0 | grep real 

real 0m0.011s 
user 0m0.000s 
sys  0m0.008s 

等做到这一点:

$ time sleep 0 2>&1 | grep real 

real 0m0.012s 
user 0m0.000s 
sys  0m0.004s