There was recently a question on the PaulDotCom Forums about taking the output from an nmap scan and creating a set of text files with the names of the OS's found, e.g. linux.txt and windows.txt, and containing the IP addresses of machines with those OS's.
I've created a ruby script called os_lister which can do just that. It takes as a piped input the output from nmap -O and creates the files. At the moment it is very limited as it only detects windows and linux machines but it can easily be extended by adding more regular expressions to the case statement.