计算平均工资的 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

使用grep,pastebc:

% 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

bc足够聪明,可以salary从加法中丢弃。

相关内容