# usage: awk -f inc.awk *.html function nodot(name) { if(name ~ /^\.\//){ name=substr(name,3); } return name; } BEGIN { for(i=1;i/ { match($0, /.*<\/title>/); t=substr($0,RSTART+7,RLENGTH-7-8); match(t, / — /); title[nodot(FILENAME)]=substr(t,1,RSTART-1); } /<a href=/ { if(match($0, /<a href="[a-zA-Z0-9].*\.html">/)){ l=substr($0,RSTART+9,RLENGTH-9-2); incoming[l,nodot(FILENAME)]=1; if(!(l in files)) { printf("warning: redlink '%s' in '%s'\n", l, nodot(FILENAME)); } } } END { for(kv in incoming){ split(kv,f,SUBSEP); split(f[1],fbase,"."); fname=fbase[1] "-inc.htm"; if(lastname!=fname){ if(lastname!=""){ printf "</ul>\n" >> lastname; } lastname=fname; print "<ul>" > fname; } printf("\t<li><a href=\"%s\">%s</a></li>\n",f[2],title[f[2]]) >> fname; } printf "</ul>\n" >> lastname; }