2013-04-06 36 views
0

我基本都含有由次以這種格式BASH AWK場分體進行計算

(00:00) 
(06:08) 
(07:54) 

我做我的研究共享數據的文本文件,以確定如何採取只特別是那些次(過濾掉所有其他的gunk),甚至用awk分離它們。當我嘗試添加數字時,會發生此問題。我似乎得到一個數字0值...

我的代碼如下:

cat somefile.txt | awk -F: '/([0-9][0-9]:[0-9][0-9])/{total+=$1}END{print total}' 

注:我使用的支架,因爲該文件包含其他時候,不要用括號括起來...所以,我試圖擺脫不需要的數據,留下我只以上的部分(00:00)

我想加在一起的左側部分,這顯然應該在這個例子中導致總13.

真希望我能找到一個解決方案,我敢肯定,這這是我目前所不知道的。提前致謝。

回答

5

嘗試這一行:

awk -F'[(:]' '{h+=$2}END{print h}' file 

例如:

kent$ echo "(00:00) 
(06:08) 
(07:54)"|awk -F'[(:]' '{h+=$2}END{print h}' 
13 

編輯

[(:](我真的想鍵入:))定義了兩個FS(字段分隔符)■(:太行會:

(06:08) 
field 1 - "" 
field 2 - 06 
field 3 - 08) 

,如果你想獲得只有幾分鐘的路程,你需要添加)到您的FS也一樣,否則你得到了$3與結束)

+0

因此,通過聲明$ 2,我們說的第二個參數(以右)支架?所以如果我把2美元,我會得到的分鐘以及?對不起,也許應該提到這一點。左邊是幾個小時,右邊是幾分鐘。非常感謝你們! – Stryk9 2013-04-06 21:56:23

+0

@ Stryk9我加了一個簡短的說明,希望它幫助。 – Kent 2013-04-06 22:07:41