平均給与を計算するBashスクリプト

平均給与を計算するBashスクリプト

従業員の給与を含む文書を与える。

ファイルの最初の行は次のようになります。

num job id salary

単語がスペースで区切られた場合。

残りの行は次のようになります。

1 engineer 034524566 8000 2 manager 122334455 15000 3 engineer 156254132 9000 4 student 142635472 5000

このファイルをパラメータとして使用し、給与平均を印刷するスクリプトを作成する必要があります。たとえば、salaries上記のファイルがあり、このコマンドを入力すると、次のように/average salaries印刷されます。

9250

私がしたこと:ヘルパースクリプトを書いたcalc

#calc "$1"

(( a=0 ))
(( sum=0 ))
while read line; do
(( value = `cut -d" " -f5 $line )) 
(( sum = $sum + $value+0 ))
(( value = 0 ))
done
echo (( sum/a ))

#average $1
cat $1 | calc

まず、不要な最初の行をスキップしませんでした。どんなアイデアがありますか?第二に、より簡単な方法があるようで、誰でも提案があれば感謝します。

ベストアンサー1

greppasteおよびbc:を使用してください。

% count="$(tail -n 1 salary.txt | grep -o '^[^\s]\+')"

% echo "$count"
4 

% salary="$(grep -o '[^ ]\+$' salary.txt | paste -sd+)"

% echo "$salary"
salary+8000+15000+9000+5000

% echo "($salary)/$count" | bc 
9250

bcsalary加算を捨てるほどスマートです。

おすすめ記事