# # exclude jobs prior to a designated job from a DAX process graph # # # minstage=$1 maxstage=$2 a1=`mktemp /tmp/awk.XXXXXX` dax=`mktemp /tmp/dax.XXXXXX` cat >$dax maxlevel=`maxlevel <$dax` cat <$a1 BEGIN { maxlevel = $maxlevel; } // { job = job \$0 "\n"; } /job>/ { jobtext[id] = job; job = ""; } // { sub("^ *","",parents); parlist[child] = parents; } function selstage(minstage,maxstage) { maxlev = maxlevel - minstage + 1; minlev = maxlevel - maxstage + 1; for(j in jobtext) { found=match(jobtext[j],"level=\"[0-9][0-9]*"); if(found) { level=substr(jobtext[j],RSTART,RLENGTH); sub("level=\"","",level); if ( (level < minlev) || (level > maxlev) ) { delete jobtext[j]; } } } } END { selstage($minstage,$maxstage); 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 $dax rm $a1