home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Unix System Administration Handbook 1997 October
/
usah_oct97.iso
/
news
/
cnews.tar
/
doc
/
fixindex.awk
< prev
next >
Wrap
Text File
|
1992-02-13
|
1KB
|
65 lines
# record format: page #:major entry:minor entry[:define]
BEGIN {
FS = ":"
BD = "\\s+1\\fB"
ED = "\\fP\\s-1"
defn = "define"
}
NR == 1 {
if ($3 != "")
printf ".Ib \"%s\"\n", $2
major = $2
minor = $3
if ($4 == defn)
pagelist = BD $1 ED
else
pagelist = $1
pageno = $1
oldpageno = $1
oldpagelist = ""
}
NR != 1 {
if ($2 == major && $3 == minor) { # neither has changed
if ($1 != pageno) { # new page number, append
oldpageno = $1
oldpagelist = pagelist
if ($4 == defn)
pagelist = pagelist ", " BD $1 ED
else
pagelist = pagelist ", " $1
} else # old page, but check for def
if ($4 == defn) {
if (pageno == oldpageno && oldpagelist != "")
oldpagelist = oldpagelist ", "
pagelist = oldpagelist BD $1 ED
}
} else { # one has changed
if (minor != "") # dump full record
printf ".I< \"%s\" \"%s\" \"%s\"\n", \
major, minor, pagelist
else
printf ".I> \"%s\" \"%s\"\n", major, pagelist
if ($4 == defn) # restart pagelist
pagelist = BD $1 ED
else
pagelist = $1
oldpagelist = ""
oldpageno = $1
if ($2 != major && $3 != "") # major has changed, minor not null
printf(".Ib \"%s\"\n", $2)
}
major = $2
minor = $3
pageno = $1
}
END {
if (minor != "") # dump full record
printf ".I< \"%s\" \"%s\" \"%s\"\n", major, minor, pagelist
else
printf ".I> \"%s\" \"%s\"\n", major, pagelist
}