2017-02-25 2 views
2

私は何度も繰り返され、次のパターンを使用してファイルを持っているそれらの後の数字を合計:だから私はをカウントせずに<Overall>の出現箇所の数をカウントしようとしている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 rating>。次に、各<Overall>タグの後に続く数字を合計したいと思います。これは私のコードです。私が正しく理解していれば

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

BEGIN部分を削除した場合、コードは正常に動作するようです。 – grail

+0

あなたの 'BEGIN'は間違って配置されています。それは ''BEGIN {} $ 1 ==" anishsane

答えて

1

別のアプローチ

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

あなたは<Overall>を含むすべての行の値を合計したいと思います:

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

例は、以下の行が175に合計しまう含むファイルになります

... 
<Overall>25 
<Overall>75 
... 
<Overall>50 
... 
<Overall>25 
... 
+0

IMHO、OPは総パターンカウントとの平均値、合計値を探したいです。 – Inian

+1

@Inian:平均について何か言及していますか? 'sum'は' mean'と同じものではありません... –

+0

平均値はOPの試行でsum/countを参照してください。無礼を意味しなかった、ありがとう! – Inian

関連する問題