OUTLINE_TABLE
''
というキーワードをまずは目印にすればいいのですが、
実はこのキーワードはこの HTML ファイル中で何回か使用されているので、
単純に同じようにはできません。
記事本文は、そのうち最初の ``OUTLINE_TABLE
'' の後に出てくるので、
それが最初の物であるかを調べることにして以下のようにすればいいでしょう。
##### 記事本文の取得 ##### # N_ot = 何回目の OUTLINE_TABLE ブロックであるかを保持 ($0 ~ / OUTLINE_TABLE/){ N_ot++ } # 最初の OUTLINE_TABLE ブロックのときだけ以下を実行 (N_ot==1 && $0 ~ / OUTLINE_TABLE/){ # 不要な部分を読み飛ばし while($0 !~ /<font size/) if(getline<=0){ errorexit=5; exit } # 本文の保存 (body[1] ~ body[N_body]) N_body=0 do{ if($0 ~ /<\/?font/) gsub(/<\/?font[^>]*>/,"") body[++N_body]=$0 if(getline<=0){ errorexit=6; exit } }while($0 !~ /<div/) # 本文の最後の <div> タグ部分を改行 (<br>) に変換して保存 sub(/<div[^>]*>/,"<br>") body[++N_body]=$0 # </div> までを保存 while($0 !~ /<\/div/){ if(getline<=0){ errorexit=7; exit } body[++N_body]=$0 } # </div> タグは単に削除 sub(/<\/div>/,"",body[N_body]) next }このように
N_ot
という変数に何回目の OUTLINE_TABLE
ブロック
であるかを保存することで、
最初の OUTLINE_TABLE
ブロックだけに実行させることが
できるようになります。
本文の font タグは削除し、div タグは
<div ...>
は改行 (<br>
) に変換し、
</div> は削除し、本文全体を body という配列に保存しています。