2012-04-03 17 views
1

我正在使用awk獲取用逗號分隔的所有第七個字段。如何從awk語句中添加時間格式hh:mm.ss

1,root,init,20,0.0,0.1,0:01.78 
1008,root,migration/0,1,2.0,1.8,7:04.32 
26542,peter.ca,top,20,1.9,0.1,5:42.78 
18776,john.sel,awk,15,0.2,0.0,0:01.00 
49841,murray.s,topsum,16,1.3,0.1,0:02.11 
29806,peter.ca,bash,20,0.1,0.0,0:00.03 
9845,murray.s,awk,18,0.5,0.2,0:14.01 
6549,peter.ca,topsum,16,1.4,0.2,0:04.81 
18746,john.sel,bash,20,0.1,0.0,0:00.50 
24987,john.bel,who,20,3.0,1.1,0:00.01 
5,root,watchdog/0,1,0.0,0.0,0:00.00 
29874,murray.s,timeon,20,0.1,0.2,0:02.15 


cat data.top | grep root | awk 'BEGIN { FS = "," } ; { print $7 }' 

輸出:

0:01.78 
7:04.32 
0:00.00 

我試圖添加這些在一起(我也假設加起來不會超過24小時,這是不是一個問題)。

在此先感謝。

回答

2
$ awk -F, '/root/{split($7, t, ":"); sum+=60*t[1]+t[2]}; END{print sum}' input.txt 
426.1 

$ date -ud @426.1 +%T.%N | sed 's/0*$//' 
00:07:06.1 
+0

感謝您添加最後一部分。我認爲這將起作用。 – leeman24 2012-04-03 01:30:55

+0

'date'命令完全不起作用。根據手冊頁,'-d'選項是爲DST設置內核的值。 – Graham 2012-04-03 01:34:13

+0

@Graham - 這是因爲kev的回答假設Linux,大概是Fedora。 – ghoti 2012-04-03 01:35:18