AWKはテキスト処理に非常に便利なツールであり、数値の合計を簡単に計算する方法を備えています。本記事では、AWKを使用して数値の合計を求める方法について解説します。
目次
背景
シェルスクリプトやコマンドラインで処理するデータには、数値が複数行にわたって出力されることがよくあります。例えば、以下のような出力があるとします:
64
65
71
82
82
79
これらの数値の合計を求める必要がある場合、AWKを使うことで簡単に処理できます。
基本コマンド
以下のコマンドを使用すると、入力データの合計を計算できます:
awk '{sum += $1} END {print sum}'
コマンドの仕組み
{sum += $1}
- 各行の1列目(
$1
)を変数sum
に加算します。 sum
は最初に自動的に0で初期化されます。
- 各行の1列目(
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}'
find
コマンドで.json
ファイルを検索。- 各ファイルに対して
python a.py
を実行。 - 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はシンプルな構文で強力なテキスト処理を可能にするツールです。特に数値データの合計計算は、短いコマンドで簡単に実現できます。ぜひ活用してみてください!