スクリプトは、基本的に「関数定義部分」と「実行部分」に分かれます。 個々の関数定義は
function 関数名 (引数 ...){ (関数本体) }のように書きますし、実行部分は
(パターン) { (実行部分本体) }のように書きます。 関数定義、実行部分は、スクリプト内部に複数書くことができますし、 実行部分本体、関数本体の部分 (中かっこの中味) は 複数行の命令を書くこともできます。
AWK を行単位のフィルタとして使う場合、例えば
% awk -f script.awk < file.in > file.outのようにして、スクリプト (この例では script.awk) 以外に、 処理させる対象である入力 (この例では file.in、file.out がその結果の出力) を与えるのですが、その入力に対して実行は以下のように行われます。
「パターン」が ``BEGIN'' である実行部分のみのスクリプト、 すなわち、
BEGIN{ (実行部分本体) }か、または
BEGIN{ (実行部分本体) } function 関数名 (引数 ...){ (関数本体) } function 関数名 (引数 ...){ (関数本体) } ...のような形である場合、それを
% awk -f file.awkのようにすれば、入力なしで BEGIN 内の部分のみが実行され、 すなわち簡単なインタプリタとして実行することになります。
MS-Windows 環境では、コマンドプロンプトを立ち上げて、その上で
> gawk -f file.awkのようにします。 これを実行する場合、 gawk.exe があるディレクトリ (フォルダ) 内に スクリプトファイルも置いてそこで実行しまうのが簡単ですが、 gawk にパスを通せば任意の場所で実行できるので、 AWK スクリプト専用のフォルダを作って整理することもできます。
竹野茂治@新潟工科大学