#!/bin/ksh -p awk 'BEGIN { tabs = 0; } function printline(i) { for (ii = 1; ii <= i; ii++) { printf "\t" } printf "%s\n",$0 } /^[ ]*#if/ { printline(tabs); tabs ++; next; } /^[ ]*(#else|#elif)/ { printline(tabs - 1); next; } /^[ ]*#endif/ { tabs --; if (tabs < 0) print "error: unmatched #endif"; printline(tabs); next; } { printline(tabs); }' $1