Question: # stop when we get a zero $1 == 0 { exit } # jumps to END condition # special steps for first line only

# stop when we get a zero $1 == 0 { exit } # jumps to END condition
# special steps for first line only NR == 1 { max = $1 }
# All lines (including first) { total += $1 }
# print results at end of data (or on zero) END { if (NR == 0 || ( NR == 1 && $1 == 0 ) ) { printf("# items: 0 ") } else { if ( $1 == 0 ) { # don't count the sentinel value NR -= 1 } printf("# items: %d ", NR) printf("Total: %f ", total) printf("Average: %f ", total / NR) } }
Part 2: Homework to be turned in For part 2, which is your homework you need to turn in, modify the program so that it also prints out the maximum and minimum values, as below: elvis> ./stats.awk 1 2 Nm 4 0 # items: 4 Total: 10.000000 Maximum: 4.000000 Minimum: 1.000000 Average: 2.500000 elvis > Note that if there is no input, it should still just print that there were no items: elvis> ./stats.awk 0 # items: 0 elvis elvis> . / stats.awk ^D # items: 0 elvis
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
