# # exclude jobs prior to a designated job from a DAX process graph # # # exjob=$1 a1=`mktemp /tmp/awk1.XXXXXX` cat <$a1 // { job = job \$0 "\n"; } /job>/ { jobtext[id] = job; job = ""; } // { sub("^ *","",parents); parlist[child] = parents; # print "DB: set parents of" child " to " parents; } function elim(node,plist) { delete jobtext[node]; if ( ! (node in parlist) ) return; split(parlist[node], plist, " ") for ( p in plist ) { elim(plist[p]); } delete parlist[node]; } END { j = jobtext["$exjob"]; elim("$exjob"); jobtext["$exjob"] = j; print(""); for (j in jobtext) { print(jobtext[j]); } print ""; for ( c in parlist ) { printf(" \n", c); split(parlist[c],plist," "); for(p in plist) { printf(" \n", plist[p]); } print(" \n"); } print ""; } EOF awk -f $a1 - rm $a1