Sample Site

Windows で GAWK を使用する準備

Windows10 32bit の前提(筆者の環境)で説明します。

GAWKの入手

最新のWindows用のGAWKはこちらで入手できます。

  • ezwinports :作者 Eli-Zaretskii 氏は GAWK マニュアル記載の Non-Unix Ports のメンテナーです。
  • basic_01.jpg
  • gawk-X.X.X-w32-bin.zip:(バイナリ) exe形式の実行ファイルを含むビルド済みの状態のもの
  • gawk-X.X.X-w32-src.zip:(ソース) 自分でビルドする、またはエクステンションを作成する場合等
  • 使用する場合はバイナリをダウンロードします。ダウンロードしたzipファイルを解凍し、フォルダ名をgawkXXXに変更し、ここではドライブCの直下に移動します。

    ここでは便宜上執筆時の最新版であるGAWK5.0.1よりフォルダ名を「gawk501」とします。

    basic_02.jpg

    GAWK各種設定

    gawk.exe のプログラムパス

    GAWKをダウンロード解凍し、Cの直下に置いただけは Windows は GAWK(gawk.exe)というプログラムがどこにあるのかわかりません。「bin」というフォルダ(ディレクトリ)にありますので、以下のようにプログラムパスを通します。

    コントロールパネル → システム → システムの詳細設定 → 環境変数(ボタン)
    ユーザーの環境変数内 Pathを選択 → 編集 → 新規

    basic_025.jpg basic_03.jpg

    C:\gawk501\bin

    と入力し、「OK」ボタンでそれぞれのウィンドウを閉じます。

    コマンドプロンプトにて gawk --version とタイプして起動を確認します。

    basic_04.jpg

    AWKPATH

    環境変数 AWKPATH は AWKスクリプトのソースファイルの格納場所(ディレクトリ)を示す変数です。これがなければコマンド上で、ソースファイル名を絶対/相対パスで書かなければならなくなります。

  • gawk コマンドの記述例
  • カレントディレクトリ(bar.txtがあるディレクトリ)にて gawk -f D:\AWK_FILES\foo.awk bar.txt gawk -f foo.awk bar.txt

    gawk は -f オプションでスクリプトファイルを使用します。上段のように、フルパスで書くのはとても億劫なので、ファイル foo.awk の在処を AWKPATH に登録するという感じです。そうすると、下段のように書けます。

    AWKPATH の登録

    AWKスクリプトの専用フォルダを準備(新規作成)します。仮に上述の通り、D:\AWK_FILES としましょう。前述のプログラムパスと同様に環境変数のダイアログを立ち上げます。少し違うのが、今度はシステム環境変数に登録します。何故とは聞かないでください。

    basic_05.jpg basic_06.jpg

    新規ボタン 変数名「AWKPATH」 変数値「.\;D:\AWK_FILES」です。

    先頭の「.\」がカレントディレクトリを表し、次の「;」は区切り文字です。
    カレントディレクトリは必ず登録してください。バッチファイルとスクリプトファイルを同じフォルダに入れて起動させることが頻繁に起きます。バッチファイル内で、そのフォルダをカレントディレクトリに変更するのは常套手段ですので。

    「OK」をクリックして、登録後、D:\AWK_FILES\ に簡単なスクリプトをエディタで書いて保存し、コマンドプロンプトにて確認してください。

  • スクリプト例 hello.awk
  • BEGIN { print "hello,world!"; }
  • コマンド gawk -f hello.awk
  • basic_07.jpg

    ※コマンドプロンプトでは、print文にて、行頭に日本語が来るとエラーになります。

    AWKLIBPATH

    環境変数 AWKLIBPATH は、GAWK 本体の持つ組み込み関数では処理不可能なことを実現する「extension(.dllファイル)」の格納場所を示す変数です。大変重宝しますし、自分で作成することもできるので、登録しておきましょう。

  • C:\gawk501 の中にあります
  • basic_08.jpg
  • AWKLIBPATH>C:\gawk501\lib\gawk\ext-2.0

  • AWKLIBPATH の登録

    前述の AWKPATH と手順は同じです。

    basic_09.jpg

    「OK」をクリックして、登録後、以下のスクリプトを前述「D:\AWK_FILES」に保存して、コマンドプロンプトにて実行します。

  • test_ext.awk
  • @load "time"; BEGIN { time = gettimeofday(); for (i = 1; i < 1000000; i++) ; time = gettimeofday() - time; printf("Elapsed Time = %d(msec)\n", time * 1000); }
  • コマンド gawk -f test_ext.awk
  • basic_10.jpg

    GAWK 単体ではできないミリ秒単位の計測を可能にする「time.dll」です。
    「time.dll」をロードすると、gettimeofday() という関数が使えるようになります。

    GAWK の設定はこれで終わりです。

    Windows で GAWK を使用する方法はもちろん上記に限ったものではありません。Windows 用の gawk.exe(オールインワンタイプ) もいくつかありますし、64bit環境であれば、Bash on Windows という選択肢もあります。

    筆者のお気に入りは、「MSYS2」という Unix ライクなコンソールをコマンドプロンプトの替わりに使うという方法です。コマンドプロンプトをシェルとして見た場合、Bash+Unix/linux 系コマンドと比較すると、あまりにも貧弱であることを実感します。