如果用户以字符串形式输入员工详细信息,并且我们希望输出显示部门的平均工资,并且输出应该与它们在输入字符串中出现的顺序相同。
例如输入字符串:
EMP101:Jack:HR:6000#EMP102:Jill:Management:10000#EMP103:Russell:Testing:10000#EMP104:Monica:HR:15000#EMP105:John:Management:25000#EMP106:Ram:Testing:8000#EMP107:Tan:HR:15000#EMP108:Harry:Management:10000
输出字符串:
HR:12000#Management:15000#Testing:9000
我尝试了以下代码:
echo "EMP101:Jack:HR:6000#EMP102:Jill:Management:10000#EMP103:Russell:Testing:10000#EMP104:Monica:HR:15000#EMP105:John:Management:25000#EMP106:Ram:Testing:8000#EMP107:Tan:HR:15000#EMP108:Harry:Management:10000" \
| awk 'BEGIN{RS="#"; OFS=FS=":"} {gsub(/"\n$/,"",$5); print $3,$4}' \
| awk -F ":" '{a[$1] += $2} {b[$1] += 1} END{for (i in a) print i, a[i]/b[i]}' \
| tr " " ":" \
| tr "\n" "#";
得到的输出为:
:0#Testing:9000#Management:15000#HR:12000
这不是我想要的,我也不明白为什么:0#
要在字符串的开头添加。谁能告诉我如何在shell脚本中实现这一点