awk计数模式匹配并将它们之后的数字相加

时间:2017-02-25 09:21:55

标签: linux bash awk

我有一个具有以下模式的文件,可以重复多次:

<Content>Un relax en el ritmo trepidante de New York   showReview(14443615, 'full');
<Date>Mar 22, 2008
<Overall rating>3
<No. Reader>-1
<No. Helpful>-1
<Overall>5

所以我试图计算<Overall> 的出现次数而不计算 <Overall rating>。然后我想总结每个<Overall>标记后面的数字。这是我的代码。

 awk -F'>' '$1=="<Overall" BEGIN{}
    {
        count++
        sum+=$2
    }
    END{printf "%.2f\n", sum/count}' *filename*

2 个答案:

答案 0 :(得分:1)

另一种方法

$ awk -F'<Overall>' 'NF==2 {sum+=$2; c++} 
                     END   {print (c?sum/c:0)}' file

答案 1 :(得分:0)

如果我理解正确,您想要对包含<Overall>的所有行的值求和:

awk 'BEGIN{FS=">";sum=0} $0~/<Overall>/ {sum+=$2} END{print sum}' file

一个示例是包含以下行的文件将总和为175

...
<Overall>25
<Overall>75
...
<Overall>50
...
<Overall>25
...