AWK のオプションについて

ここでは、AWK の起動時のオプションについて幾つかを紹介します。

起動するときに動作モードなどのさまざまなオプションを AWK に与えることができます。
実際には、コマンドプロンプトなどで awk.exe の引数としてこれらの「オプション」を指定します。
「最初の AWK スクリプト」の章で、起動用 BAT ファイルで使用した「-f」は、実行するスクリプトファイルを指定するオプションです。

AWK には沢山のオプションがあります。
それぞれの詳細は専門書に譲るとして、ここではスクリプトの動作を起動用 BAT ファイルで切替指定する例を取り上げます。
そのオプションは「-v」です。ある変数に値を設定するオプションです。


話は変わりますが・・・
2011年3月11日の大地震があってから「地震データ」を集計することにしました。
初めは気象庁のホームページから地震データをコピーしてデータ処理していたのです。
しかし、東電の[無]計画停電が始まり、「停電ブロック」の調査を始めたのです。
これがまたかなりいい加減なデータで、東電内部のだらしなさがそのまま出ていました。
AWK スクリプトで停電ブロックを処理していたのですが、なんと数日おきにデータが更新されるのです。
立派なシステムコンピュータがあると言うのに、手打ちでデータを作っているのです。
これには手間取りました!!

そんなあるとき・・・
地震データをダウンロードしようと気象庁のホームページに戻ってビックリ!!
1 週間分のデータしか公開していなかったのです。数日分のデータが失われてしまいました。
諦めきれずにネットをウロウロしていたら、日本気象協会のホームページに辿りつきました。
しかも、2008年7月24日からの地震データがあるではありませんか!!
早速、こちらからデータを頂くことにして、スクリプトを大改造しました。

ところが・・・
2001年7月11日以降のデータが AWK で処理できないことに・・・
調べてみると、過去のデータとまったく異なる形式になっていたのです。
東京電力のデータも同様にスクリプトで処理できない。。。
実は、その数日前に誤って IE をバージョン 9 にしてしまったのです。
Windows Update で「1件の重要な・・・」が表示されているのを選択してしまったのです。
そしてスクリプトを大幅に改造することになってしまいました・・・というお話です。。。


長い・・・ながぁ〜い寄り道から元に戻ります。
結局、過去のデータは IE8 で、新たなデータは IE9 で取り込んだデータとなりました。
ここからが本題です。
オプション選択により、これらのデータを一つのスクリプトで処理できるように改造しました。

スクリプトは以下のような構造としました。

if (IE9_FLG) {
  IE9 用プリプロセッサ
{
IE8 用スクリプト・・・
ここで本題です。「IE9_FLG」を起動用 BAT ファイルで指定してやろうという魂胆です。
起動用 BAT ファイルでは・・・
@echo off
gawk -f txt2csv.awk -f txt2csv_preprocessing.awk -v IE9_FLG=1
pause
・・・のように「-v」オプションで、「IE9_FLG」という変数に「1」を代入するというオプションを付加します。
この BAT ファイルを実行すると、スクリプトでは IE9 用スクリプトのブロックが実行されるという仕組みです。
ちなみに、「-v」オプションを指定しなければ IE8 用スクリプト部分のみが実行されます。
そして「txt2csv_preprocessing.awk」は、IE9 データを IE8 と同様にする小さなプリプロセッサです。

今回は、IE8 用スクリプト「txt2csv.awk」に「IE9_FLG」でプリプロセッサを動かす部分を書き加えただけで IE9 に対応しました。
スクリプト改造を最小限にする・・・これバグ発生防止に大きな効果があります。

以上・・・
「-v」オプションは結構使えるオプションですよ。
このオプションだけで、こんなに長いページになってしまいました。
ごめんなさい。

他にもフィールドセパレータを指定できるオプションなどがあります。
参考書で調べてはいかがでしょうか。

<-->

戻る