Linuxでループ内の算術演算にawkを使用する方法
awkコマンドは、Linuxにおいてテキストファイルを処理および分析するための強力なツールであり、特にループ内で算術演算を行う必要があるときに便利です。
この記事では、ループ内での算術演算に awk を使用する方法をガイドし、概念を明確にするためにシンプルな例を使います。
awkとは何ですか?
awkは、テキスト処理とデータ抽出のために設計されたスクリプト言語で、入力を行ごとに読み込み、各行をフィールドに分割し、これらのフィールドに対して操作を行うことを可能にします。これは、パターンマッチング、算術計算、フォーマットされたレポートの生成などのタスクで一般的に使用されます。
awkの基本的な構文は次のとおりです:
awk 'BEGIN { initialization } { actions } END { finalization }' file
BEGIN: 入力処理前に実行されるコードブロック。actions: 入力の各行に対して実行されるコードブロック。END: すべての行の処理後に実行されるコードブロックです。
ループ内での算術演算の実行
ループ内で算術演算を行うために awk をどのように使用するかを、主要な概念を示すための次の有用な例で探ってみましょう。
例1:数の合計を計算する
ファイル名が numbers.txt で、以下の数字が含まれていると仮定します。
5
10
15
20
これらの数の合計はawkを使用して計算できます:
awk '{ sum += $1 } END { print "Total Sum:", sum }' numbers.txt
説明:
{ sum += ¥1 }: 各行に対して、最初のフィールドの値¥1が変数sumに加算されます。- すべての行を処理した後、合計の sum が出力されます。
例2: 平均の計算
数値の平均を計算するには:
awk '{ sum += $1; count++ } END { print "Average:", sum / count }' numbers.txt
説明:
count++: 各行のカウンタをインクリメントします。合計/カウント: 合計をカウントで割って平均を計算します。
例3:掛け算の表
awkを使って、特定の数の乗算表を生成することができます。たとえば、5の表を生成するには:
awk 'BEGIN { for (i = 1; i <= 10; i++) print "5 x", i, "=", 5 * i }'
説明:
- 1から10まで実行されるループです。
print "5 x", i, "=", 5 * i:掛け算表を表示します。
例4:階乗計算
数の階乗を計算する(例:5):
awk 'BEGIN { n = 5; factorial = 1; for (i = 1; i <= n; i++) factorial *= i; print "Factorial of", n, "is", factorial }'
説明:
- n=5: 階乗が計算される数です。
factorial *= i: 各反復でfactorialの現在の値にを掛け算します。
例5: 偶数の合計
ファイルから偶数のみを合計するには:
awk '{ if ($1 % 2 == 0) sum += $1 } END { print "Sum of Even Numbers:", sum }' numbers.txt
説明:
- このコードは、数が偶数かどうかをチェックします。
sum += $1: 偶数を合計に加えます。
結論
awkコマンドは、ループ内で算術演算を行うための多目的ツールです。ループ、条件、および算術演算子を組み合わせることで、幅広いタスクを効率的に処理できます。
これらの例を練習し、自分のスクリプトで実験して、awkの持つ可能性を最大限に引き出してください!




