特定パターンの横の合計値

特定パターンの横の合計値

横に数字を含む複数のタグを含むファイルがあります。

<Overall>4
other <tags> and data
<Overall>2
other <tags> and data
<Overall>3

ファイルを検索し、タグ全体の横にあるすべての数値をどのように計算しますか?その後、この数字をタグの総数で割って全体の平均を取得します。

たとえば、上記のコードでは平均値は3です。

次に、現在のディレクトリ内のすべてのファイルを繰り返し、各ファイルの全体的な平均を一覧表示します。

ベストアンサー1

awkの使用(および数字がすべての行にあると仮定)

awk 'x+=sub(/<Overall>/,""){y+=$0}END{print "AVG:",y/x}' file

xは成功したサブに増加します<Overall>。これは含まれている行でのみ増加することを意味します<Overall>

次に、次のブロックは、行の残りの数を合計に追加します。

ENDプログラムの終了時に実行されます。

最後のブロックの平均を印刷します。

編集:多くのファイルの場合

awk 'x+=sub(/<Overall>/,""){y+=$0}END{print FILENAME,"AVG:",y/x}' LISTOFFILES

おすすめ記事