##### 見出し部分の取得 #####
($0 ~ / CONTENTS_TITLE_TABLE/){
# 不要な行の読み飛ばし
while($0 !~ /<font size/)
if(getline<=0){ errorexit=2; exit }
# headline に行を保存
headline=$0
while(headline !~ /<\/small>/){
if(getline<=0){ errorexit=3; exit }
headline = headline $0
}
# 不要なタグ (font,small) を削除
gsub(/<\/?font[^>]*>/,"",headline)
sub(/[ \t]*<small>[ \t]*/,"",headline)
sub(/[ \t]*<\/small>.*/,"",headline)
while($0 !~ /\/CONTENTS_TITLE_TABLE/)
if(getline<=0){ errorexit=4; exit }
next
}
これは、``CONTENTS_TITLE_TABLE'' というキーワードが
そこにしか使われていないのでできることなのですが、
ここでは以下のようなことを行っています。
<font size'' という文字列に出会うまでは getline を
繰り返す
</small>'' が含まれていなければ、
複数行で構成されている可能性を考えて、
再び getline で headline を追加していく
/CONTENTS_TITLE_TABLE'' というキーワードに出会うまで
行の読み飛ばしを行う
今回のタグの削除は、<font>, </font> タグは gsub() で、 <small>, </small> タグは sub() で行っていますが、 font の方はそのタグのみを削除し、 small の方はその前後のゴミも削除するようにそうしています。 なお、この文字列には <b>, </b> タグも含まれるのですが、 これは出力用に残しておくことにします。
なお、<font> の削除で、
「<\/?font[^>]*>」という正規表現を使っていますが、この後半部分は
[^>] : > 以外の文字
[^>]* : > 以外の 0 文字以上の連続
[^>]*> : > 以外の 0 文字以上の連続の後に >
<font size=+1> のように
使われていてオプションが含まれているので、
それも一緒に削除するために
「をこれで表現しています。<fontとその後に続く>以外の文字列と その後の>」