2011-06-21 55 views
1

我已經使用時間命令,如下所示來執行程序(如「XXX $時間./a.out」),具有輸出,把「時間./a.out」的輸出到可變

real 0m7.250s 
usr 0m10.395s 
sys 0m0.026s 

我想得到的是0和7.250,如0m7.250s。我嘗試過「awk」{print $ 2}'「,但沒有成功;沒有輸出。

PS:我試過把時間命令的輸出通過使用「>」輸出到文件,也沒有成功。

回答

4

嘗試:

pax$ tm=$((time sleep 1) 2>&1 | awk '/^real/{print $2}') ; echo $tm 
0m1.002s 

(當然代替你自己的a.out命令,sleep 1只是使用的例子)。

它創建用於time命令子外殼,並確保其標準誤差被髮送到標準輸出,而不是(time具體輸出其信息以標準錯誤,使得它保持與它的定時程序的正常輸出分開)。

awk命令捕獲行real並輸出第二個參數(時間)。

+0

您也可以設置TIMEFORMAT環境變量以避免需要使用awk進行解析。 '((TIMEFORMAT =%R;時間睡眠1)2>&1)' – Sorpigal

4

time命令將其輸出發送到標準錯誤,以免干擾正常的程序輸出。您將希望使用2>&1將其重定向到可以捕獲的地方。