Linuxのシェルは、テキスト処理やファイル操作だけでなく、基本的な数学計算も可能です。この記事では、シェルの計算機能を用いた基本的な方法から応用例までを解説します。コードには日本語でのコメントを付け、分かりやすく説明します。また、より高度な処理のための補足事項も記載しています。
目次
シェルの基本的な計算方法
Linuxのbashシェルでは、`$((…))` という形式を使用して計算を行うことができます。
result=$((5 + 3)) # 5と3の加算
このコードでは、5と3を加算し、その結果を変数`result`に格納しています。
基本的な数学演算子
bashシェルにおいて使用できる基本的な数学演算子は以下の通りです。
# 加算
sum=$((5 + 3))
# 減算
difference=$((5 - 3))
# 乗算
product=$((5 * 3))
# 除算
quotient=$((5 / 3))
# 剰余
remainder=$((5 % 3))
awkを使用した高度な計算
awkはテキスト処理ツールとして知られるが、数値計算機能も優れています。簡単な例を見てみましょう。
echo 5 3 | awk '{print $1+$2}' # 5と3の加算
awkの主な数学関数
awkには、基本的な計算だけでなく、高度な数学関数も提供されています。
# 平方根
echo "9" | awk '{print sqrt($1)}'
# 乗算
echo "2 3" | awk '{print $1^$2}'
応用例
1. ファイルの行数を元にページ数を計算
大量の文書データがあり、1ページあたり30行としたときのページ数を計算する。
pages=$(( $(wc -l filename.txt | awk '{print $1}') / 30 )) # ファイルの行数を30で除算
2. ディスク使用量の計算
現在のディスク使用量と総容量から、残りの空き容量を計算する。
free_space=$(( $(df -h | grep "/dev/sda1" | awk '{print $3}') - $(df -h | grep "/dev/sda1" | awk '{print $2}') )) # 使用量から総容量を減算
3. 平均の計算
5つの数値の平均を計算する。
average=$(( (5 + 10 + 15 + 20 + 25) / 5 )) # 5つの数値の合計を5で除算
4. ネットワーク速度の計算
ダウンロードしたデータのサイズと時間から、平均のダウンロード速度を計算する。
speed=$((500 / 5)) # 500MBのデータを5秒でダウンロード
まとめ
Linuxのシェルやawkを使用すると、基本的な計算から高度な数学関数まで、多岐にわたる計算を行うことができます。これを活用して、日常の作業やスクリプト作成をより効率的に進めることができます。
コメント