2013-04-06 55 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