1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#!/usr/bin/awk -f NR == 1 { for (i = 1; i <= NF; i++) xs[i, 2] = 1 } !/[+*]/ { for (i = 1; i <= NF; i++) { xs[i, 1] += $i xs[i, 2] *= $i } } /[+*]/ { for (i = 1; i <= NF; i++) total += xs[i, $i == "+" ? 1 : 2] } END { print total }