##### 見出し部分の取得 ##### ($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
とその後に続く>
以外の文字列と その後の>
」