In UNIX shell it's customary to use small tools that do very small tasks, and combine them to assemble the anwser. The base system supplies you with a great variety of tools that do various basic operations on text.
For example, you could run quota like this :
quota | grep undergrad1
Which would run quota, and pass its output into grep whose job is to return lines if they contain its argument. This would return only the undergrad1 line.
Then you could feed that line to tools that would hack it up into columns. The prime tool for doing that is called cut. Cut takes a separator and a field specification - or alternatively, character counts.
In your case, you may want to wash the output of grep before you pass it to cut, so as not to be dependant on character counts. If quota is using tabs to separate columns, then you can feed that to cut as is :
quota | grep undergrad1 | cut -d "\t" -f 3
...but if it uses a variable number of spaces, then you may want to first collapse them into one with tr and its -s option :
quota | grep undergrad1 | tr -s " " | cut -d " " -f 3
Note that we now ask cut to use space, not tab, as a separator.
With this you should be able to assemble a script that does what you want. Going further, you could grep "Filesystem" on the first line and try to find out the column index before returning them, if you expect to run on systems where the names are the same, but the order different, or whatever fits the scope of your script.