Usage: # applyconf <your config file> [to] <template config file> your config file is the one that you've made changes to. template file is any config file you want, but probably one that your config file originated from a few revisions ago. awk: setconf.awk: This reads in your config file (stdin actually) and creates a setconf.db file containing easier to use info. (i.e. the parsed contents of your config file) genconf.awk: This reads in setconf.db, then reads in the template (from stdin) and checks each line in the template against it's info from your config file. Commented in your config file end up commented in the output. Uncommented lines end up uncommented. Some lines with arguments get their arguments changed. (ident, maxusers, pseudo-device) However, everything doesn't get through, so you'll want to double check. To make this easier, after emitting the output file to CONFIG, the script spits out a list of new stuff in the template and unused stuff from your config file. Bugs'n'stuff: Should handle multiple options per line. Should handle options set to a value. doesn't handle quotes very well. Doesn't handle identical/similar lines. doesn't save end of line comments. i.e. "pseudo-device loop # network loopback" turns into "pseudo-device loop" doesn't know about extra arguments to device lines.