Discovered by trial and error: If a student's name has spaces in it, then gb-average would always yield "no results" even where there were results to report. Since I was originally using spaces to split the line between name and grade, edge case names like 'Sophomore, Weird Susie' caused the naive algorithm to wet the bed.
If a gradebook file had records like the following, gb-show would wet the bed: Student,Name:95 The problem was the missing space after ':'. This version of gb-show does *not* assume a space follows the colon. Instead, it cleanly handles either case: space or no space. In a nutshell, find the colon, use it to split line into name versus rest, then trim the rest (so that any possible spaces will be removed). Easy, once you see it.
-d DIRECTORY allows you to specify what directory to search for a 'students.txt' file.
A pretty solid working version of all three. Also the code is now better organized and the three tools are consistent in style, design and structure.