次へ: 6 全体のソースコード 上へ: AWK による HTML ファイルの整形 その 3 前へ: 4 パターン部分の定義 (PDF ファイル: awkwww3.pdf)


5 分野依存部分の分離

前回 [5] で作成したスクリプトは、 スクリプト自体は、対象となるニュースの分野、 すなわち社会ニュースであるかコンピュータニュースであるかには 依存していませんでした。

今回のスクリプトは、 最初の BEGIN ブロックには 分野に特化したパターンを定義する必要がありますので、 もちろん分野に依存しているのですが、 3 節の全体のソースコードを見ればわかりますが、 その BEGIN ブロック以外は分野には依存していません。 よって、BEGIN ブロックだけすげかえれば、 他の部分は社会ニュース用、コンピュータニュース用などの 他の分野にも使いまわしができます。

このような場合てっとりばやいのは、 実際にファイルをコピーして、 その BEGIN ブロック部分だけ書き直す、という方法ですが、 そういう方法だと、 共通部分にバグがあって修正するとか、改良するとかという場合に、 すべてのスクリプトの同じ箇所を修正する、改変する、 ということをしなければなりません。

しかしそれ以外に、「スクリプトを分割」して、 共通部分は一つのファイルにして共有する、という手があります。 C 言語で言えば「ライブラリ化」ということに相当します。

AWK では、複数のスクリプトを複数の -f オプションで 読み込ませることができます。

  awk -f script1.awk -f script2.awk ... datafile
複数のスクリプトファイルは、 それらが連結された一つの大きなスクリプトであるとみなされます。

逆に言えば、今回のスクリプトを BEGIN ブロックと それ以降のスクリプトに分離すれば、 それ以降の部分は他のスクリプトでも 上のようにすることで共通に利用できます。

また、複数のスクリプトで BEGIN ブロックなどを それぞれ持つこともできますが、 それもそれらをつなげた一つのスクリプト内に複数の BEGIN ブロックが あることと同じで、 データを読み込む前に、最初に現われた BEGIN ブロックから 順に BEGIN ブロックの処理が行われていくだけです。


次へ: 6 全体のソースコード 上へ: AWK による HTML ファイルの整形 その 3 前へ: 4 パターン部分の定義
竹野茂治@新潟工科大学
2006年9月8日