MENU

AWKを使った簡単な合計計算の方法

AWKはテキスト処理に非常に便利なツールであり、数値の合計を簡単に計算する方法を備えています。本記事では、AWKを使用して数値の合計を求める方法について解説します。

目次

背景

シェルスクリプトやコマンドラインで処理するデータには、数値が複数行にわたって出力されることがよくあります。例えば、以下のような出力があるとします:

64
65
71
82
82
79

これらの数値の合計を求める必要がある場合、AWKを使うことで簡単に処理できます。

基本コマンド

以下のコマンドを使用すると、入力データの合計を計算できます:

awk '{sum += $1} END {print sum}'

コマンドの仕組み

  1. {sum += $1}
    • 各行の1列目($1)を変数sumに加算します。
    • sumは最初に自動的に0で初期化されます。
  2. END {print sum}
    • すべての行を処理し終えた後にENDブロックが実行され、合計値sumを出力します。

実例

データの例

以下のような数値データを持つファイルdata.txtがあるとします:

64
65
71
82
82
79

このファイルの合計を計算するには、以下のコマンドを実行します:

cat data.txt | awk '{sum += $1} END {print sum}'

出力結果

443

findコマンドとの組み合わせ

複数のJSONファイルに対してPythonスクリプトを実行し、その結果の合計を求めるケースを考えます。

以下のコマンドを使用します:

find . -name "*.json" -exec python a.py {} \; | awk '{sum += $1} END {print sum}'
  1. findコマンドで.jsonファイルを検索。
  2. 各ファイルに対してpython a.pyを実行。
  3. AWKで出力結果を集計し、合計値を出力。

出力例

1445

応用例

AWKのsum変数を応用して、さまざまな計算が可能です:

  • 平均値の計算
awk '{sum += $1; count++} END {print sum / count}'
  • 最大値と最小値の計算
awk 'NR == 1 || $1 > max {max = $1} NR == 1 || $1 < min {min = $1} END {print "Max:", max, "Min:", min}'

まとめ

AWKはシンプルな構文で強力なテキスト処理を可能にするツールです。特に数値データの合計計算は、短いコマンドで簡単に実現できます。ぜひ活用してみてください!

目次