|
|
1.1 root 1: #!/bin/sh
2:
3: # check arguments
4: if [ -z "$1" ]; then
5: echo "usage: $0 <html file>"
6: echo
7: echo "Adds header anchors to the file and then outputs an corresponding index."
8: exit 1
9: fi
10: if [ \! -f "$1" ]; then
11: echo "ERROR: file '$1' not found"
12: exit 1
13: fi
14: doc=$1
15: new=$doc.new
16: tmp=$doc.tmp
17:
18: # remove existing header anchors
19: sed 's%<a name="[^"]*"></a><h%<h%' $doc > $tmp
20:
21: # add an anchor before each of the headings
22: # assumes valid, single line HTML headers without "'s
23: sed 's%\(<[hH][0-9]>\)\([^<]*\)\(</[hH][0-9]>\)%<a name="\2"></a>\1\2\3%' $tmp > $new
24: rm $tmp
25:
26: # ask user whether he wants the new changes
27: echo "Changes"
28: echo "======="
29: diff -u $doc $new
30: while true; do
31: echo "Replace original (y/n)?"
32: read answer
33:
34: if [ "$answer" = 'y' ]; then
35: mv $new $doc
36: echo "replaced."
37: break
38: elif [ "$answer" = 'n' ]; then
39: rm $new
40: echo "undo."
41: break
42: fi
43: done
44:
45: # output index
46: idx=$doc.idx
47: echo "<ul>" > $idx
48: grep '<a name="' $doc|sed 's%^.*<a name="\([^"]*\)".*$% <li><a href="#\1">\1</a>%' >> $idx
49: echo "</ul>" >> $idx
50:
51: echo "---------------------------------------------------------"
52: cat $idx
53: echo "---------------------------------------------------------"
54: echo "Above listed index for the '$doc' file is in file '$idx'."
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.