Gnu Awk (gawk) 日本語対応版
● jgawkには、オリジナルのgawkに次のような変更が加えられています。
◎ 正規表現等が漢字などの2バイト文字に対応しています。
正規表現の'.'は2バイト文字であるか1バイト文字であるかによらず一文字にマッチしますし、
2バイト文字のコード体系はオプションによって、
日本語Shift JIS (-Wlang-sjis)
日本語EUC (-Wlang-euc)
韓国語EUC(KS C5601-1987) (-Wlang-kseuc)
中国語(台湾) TCA (-Wlang-tca)
の4種類が指定できます。これらのオプションを指定しなかったときのディフォルトはjgawk自身のコンパイル時に決定されており、MS-DOS版では日本語Shift JISとなっています。なお、"-Wlang-latin"を指定すると2バイト文字の解釈をしません。
識別子に2バイト文字を使うことはできません。
◎ 組込み関数に以下のものを追加しました。
jindex(s, t)
文字列s中の文字列tの位置を返します.
jlength(s)
文字列sの文字数(バイト数ではない)を返します.
jsubstr(s, i, n)
文字列sのi番目の文字から始まりn文字からなる部分文字列を返します.
◎ MS-DOS版では引数評価に次のような拡張がなされています。
* single quots('')で引数を括ることができます。
jgawk 'BEGIN{print "hello";}'
* ワイルドカードにcsh風のglobbingができます。
*.[ch] ... *.c および *.h
jgawk.{man,doc,tex} ... jgawk.man, jgawk.doc, jgawk.tex
◎ MS-DOS版ではsystem()関数に次のような拡張がなされています。
* 戻り値が取得できます。ただし、command.comの内部コマンドの場合は常に 0 となります。実行出来なかった場合 255 を返します。
* 出力ハンドルの切り替え。
これは [FD1]>&[FD2] のような構文で、プログラムがファイルハンドル FD1 へ出力する内容を FD2 へりダイレクトします。
例えば
system("jgawk 2>&1");
とすると、通常は標準エラー出力(2)へ出力されるjgawkのusageが標準出力へ出されます。この機構はgetlineへのパイプにも有効で、"jgawk 2>&1" | getline s;と書くこともできます。