Se o usuário inserir os detalhes dos funcionários como string e quisermos que a saída exiba o salário médio do departamento e a saída deve estar na mesma ordem em que aparecem na string de entrada.
Por exemplo, string de entrada:
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
Cadeia de saída:
HR:12000#Management:15000#Testing:9000
Tentei abaixo o código:
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" "#";
obteve a saída como:
:0#Testing:9000#Management:15000#HR:12000
Isso não é o que eu quero e também não estou entendendo por que :0#
está sendo adicionado no início da string. Alguém poderia me dizer como conseguir isso no script de shell