AWKスクリプト自体をコマンドにする

スクリプトfs.awkの1、2行目を見てください。コマンドラインの プログラムではなかったものですね。

    #!/usr/local/bin/gawk -f
    # fs.awk: 区切文字を空白からカンマ , に変更する例
    BEGIN {
        FS = ",";
    }

    /96\// {
        print $1, $3;
    }

行中に#がある場合、そこから後ろはコメントとなり、プログラムの実行と は関係がなくなります。行の途中からコメントにすることもできます。適切に 最低限必要なコメントを書くようにしましょう。

しかし、この説明では1行目の意味は分りませんよね。これは次のように使わ れます。まず、chmodコマンドを使ってスクリプトに実行属性を与えます。

    % chmod 755 fs.awk
    % ls -l fs.awk 
    -rwxr-xr-x    1 ogurisu  ogurisu       120 Dec 10 02:18 fs.awk
    %

chmod +x fs.awkとしても実行属性を与えることができます。この実行属性は、 この作業を一度行なえばそれ以降はずっと有効になります。こうしておくと、 次のようにスクリプトファイル名を指定するだけで、awkのスクリプト fs.awkが実行できます。

    % ./fs.awk sample.cvs

UNIX系の OSでは、ファイルの最初の2バイトが#!で始ま る場合、そのファイル自身を引数として#!に続くファイル名(この場合 /usr/local/bin/gawk -f)を実際の実行コマンドとして、実行する機能があ るのです。[*]つまり、次の2つは同 等なのです。

    % ./fs.awk sample.cvs

    % /usr/local/bin/gawk -f ./fs.awk sample.cvs

これは UNIX自身がそういう仕組を持っているとしか説明のしようが ありませんが、とても便利です。まず、自分のホームディレクトリにbinとい うディレクトリを作っておきます。

    % mkdir ~/bin

そして、~/.cshrcに次の一行を追加して、ログインしなおしましょう。

    set path = (~/bin $path)

bashのユーザなら、次の一行を~/.profileか~/.bashrcに追加 します。

    PATH=~/bin:$PATH

そして、役に立つスクリプトができたら、chmodで実行属性を与えて、どんど ん~/binにコピーしておくのです。すると、いつでもどこでもそのスク リプトが普通のコマンドと同じように使えます。

OGURISU Osamu
2004-01-15