For standards compliance you would want to look at some of the usual but less well known text manipulation tools:
Code:
comm select or reject lines common to two files http://www.opengroup.org/onlinepubs/9699919799/utilities/comm.html
csplit split files based on context http://www.opengroup.org/onlinepubs/9699919799/utilities/csplit.html
cut cut out selected fields of each line of a file http://www.opengroup.org/onlinepubs/9699919799/utilities/cut.html
fold filter for folding lines http://www.opengroup.org/onlinepubs/9699919799/utilities/fold.html
join relational database operator http://www.opengroup.org/onlinepubs/9699919799/utilities/join.html
paste merge corresponding or subsequent lines of files http://www.opengroup.org/onlinepubs/9699919799/utilities/paste.html
split split files into pieces http://www.opengroup.org/onlinepubs/9699919799/utilities/split.html
Later 4.x BSD systems expanded on such things quite plentifully, if FreeBSD is any example, hehe.
I have a file in my Dropbox that lists most of the programs covered by the last SUS spec, sans SCCS, things that should be built into the shell, etc.
__________________
My
Journal
Thou shalt check the array bounds of all strings (indeed, all arrays), for surely where thou typest ``foo'' someone someday shall type ``supercalifragilisticexpialidocious''.