本文へ移動

『コーパス日本語学ガイドブック』付録CD収録のjgawkについて



どのバージョンが収録されているか?

付録CDにはアーカイヴや解凍済みなど複数入っていましたが、いずれもserow版のJGAWK11.LZHが元らしく、ファイルサイズから見て、GO32版ではないようです。

date time size filename
------ ------------ ------ --------------
93/09/25 05:51:58 188,444 JGAWK.EXE

15年前のもののようです。readmeを見ると、serow版でした。

コマンドプロンプトの解説は、国立国語研究所 特定コーパスのページ(参考資料)コマンドプロンプトの解説(pdf)ファイルか、田野村先生のサイトにある「出版物」のところを参考にしてください。

一応、バージョンを確認してみましょう。

cmd.exe上でのjgawk -v

とすると、以下のように出ました。画面左上に「cmd.exe」と書いてあるところに注目してください。

Japanized Gnu Awk (jgawk) 2.15.2 + 1.1(SJIS)

でも、使えないときがある。それをとりあえずは解決する。

Windows XP Pro SP2で試した感じだと、JGAWK -vとしても、下図のように何も表示されないときがあるようです。

cmd.exe上でのjgawk -vの失敗例

つまり、

  1. 普通にCMD からJGAWK -vで通る場合もある。
  2. 画面が一瞬だけ揺らいで、21行分の空白が空いてプロンプト位置が表示されるときもある(上図)。
  3. pifファイルが生成されることもあるし、そうでない場合もある。

多くのDOS初心者は、もし、2のような現象に出会ってしまうと、どうにも手が出ないで困ってしまうのではないか…と思います。

今まで、cmd.exeとcommand.comとの違いを、私はあまりよく考えてみたことがなかったので、ちと試してみました。

まず、jgawk.exeのプロパティに対して互換モードONにしてWindows 95を設定した場合。

特に現象面での変化はありませんでした。これでは解決に至らず。

次に、先ほど設定したjgawk.exeのプロパティは互換モードは解除(初期状態に戻す)。
その上で、CMDを起動し、更にCMDの画面からcommand.comを起動。

下図の1つ目は、画面左上に「cmd.exe」、2つ目は「Command Prompt」とあるところに注目。

command.comを起動

KKCFUNKが組み込まれ、command.comが起動した。

これでKKCFUNKが組み込まれ、ちゃんと使えるようになりました。すげー遅いけど。

command.com上でのjgawk -v

command.com上でのjgawk -vの成功例

ちょっと試してみましょう。

以下、付録CDの \tanomura\AWK files\AWK ディレクトリを、丸ごとC:\TEMP\AWK files\AWKに複写した場合の画面例。

一番下の行にあるように、

jgawk '{print $1,$9}' idol.dat

と入力し、[Enter]キーを押します。

jgawk '{print $1,$9}' idol.dat を入力

idol.datのフィールド1とフィールド9だけが一気に表示されました。
しかし、閲覧できたのは「や」~「わ」の、最後の所だけです。「あ」~の部分は見えません。
残念です。

idol.datのフィールド1とフィールド9だけの表示

そこで、ファイルに出力します。

一番下の行にあるように、

jgawk '{print $1,$9}' idol.dat > itmp.txt

と入力し、[Enter]キーを押します。

テンポラリファイルへの出力

次に、itmp.txtを画面表示させます。
普通はitmp.txtファイルをダブルクリックしてメモ帳で開いて読めば良いだけの話です。
あくまでも「この真っ黒画面で読む方法の紹介」という意味しか持っていません。

type idol.dat | more

と入力し、[Enter]キーを押します。|(縦棒)はパイプ記号と呼ばれるもので、[Shift]キーを押しながら「¥」キーで入力できます。もちろん半角で入力せねばなりません。

パイプ記号とmoreの使い方

行末に -- more -- と出てきます。[Enter]キーを押すたびに、1行ずつ下にスクロールして行きます。

ピーター・パンの名前がありますね…。桃組531って、Momocoクラブ出身だったのか。知らなかった。

moreで次行を読み込む

一番下まで来ました。ここで

exit

と入力して[Enter]キーを押すと、command.comを終了できます。
画面左上が、「Command Prompt」から「cmd.exe」に変わるところに注目。

command.comの終了

command.comが終了しました。ここで

exit

と入力して[Enter]キーを押すと、cmd.exeが終了し、画面が閉じられます。

cmd.exeの終了

Unicode対応のAWKはどれか?

ということで、結論を書きます。

『コーパス日本語学ガイドブック』付録CD収録のjgawkは、2バイト文字のコード体系はオプションによって、

の4種類が指定できます。便利です。

しかし、そうは言っても残念ながら古すぎるので、他のawkと取り替えるのが吉です。

awkには色々あって、大変わかりにくいのですが、

『コーパス日本語学ガイドブック』に記載されている範囲(つまり、Windows上で、SHIFT JISコードに限定してテキスト処理をする場合であれば、「32ビット版」かつ「マルチバイト対応」という説明があるawkを使えば良いはずです。

以下の4つが著名なものだろうと思います。

  1. いわゆるt^2版のgawk win32(exeファイルのタイムスタンプは1995/01/29)

  2. いわゆるBruce.版のmawk MBCS(exeファイルのタイムスタンプは1998/08/22)

  3. いわゆるWILLs版のGNU Awk 3.0.6 + multi-byte extension 1.15(gawkm)(exeファイルのタイムスタンプは2001/05/26)

  4. いわゆるBruce.版のgawk 3.1.5 for Windows(exeファイルのタイムスタンプは2005/12/23)

なお、16ビット版と32ビット版の違いですが、32ビット版の方が高速に動きます。

GO32というDOSエクステンダを入れれば、16ビットソフトウェアを32ビットモードで動作させて、多量のメモリを使えるようになりますが、既に32ビット版があるならば、素直に32ビット版を使うのが吉です。もちろん、使っているOSがWindows95,Windows98,WindowsMeならば、今でも意味があるのかもしれませんが…。
djgpp版と書かれているものがあるかもしれませんが、普通のユーザにとっては「go32を使わないでもロングファイル名が使えるよ」という程度の意味です。特に気にする必要はありません。

以上の4つのawkの内、ユニコードに対応しているものが必要な場合は3のWILLs版か、4のBruce.版のgawk 3.1.x for Windowsに絞り込まれます。

ただ、残念なことに、Bruce.版のgawk 3.1.5、3.1.6、3.1.7はGawk on Windowsのダウンロードページにありましたが、2010年11月頃から公開停止になってしまっているようです。

UTF8で保存したファイルに対して操作すると、「マルチバイト文字を対象にした gsubの動作がおかしくなる場合がある」そうです。
私の手元にある3.1.5、3.1.6、3.1.7ベースの全てのgawkでも試してみましたが、確かにそれらしき現象が発生する場合があるのを確認しました。
プログラム開発って、とっても難しいんでしょうね…。

ということで、「UTF-8対応のgawkがどうしても欲しい!」という大前提を付けた場合、本日(2011/02/19)時点でのオススメは、WILLs版のGNU Awk 3.0.6 + multi-byte extension 1.15(2001-05-16)ということになりそうです。
ここ(gawkm115.zip)にも転載しておきます。
10年前の3.0.6ベースですが、gsubの動作で所期の目的だった出力を得られました。

Unicode対応版の基本的な使い方

※以下の␣は半角スペース1個分空けるの意味です。

gawk.exe␣-Wctype=UTF8␣-f␣スクリプトファイル名␣対象ファイル名␣>␣結果出力先ファイル名

例えば以下のようにDOS窓に入力します。

gawk.exe␣-Wctype=UTF8␣-f␣script.awk␣input.txt␣>␣output.txt

注意事項として、このとき、script.awkinput.txt必ずUTF-8(BOMなし)で保存せねばなりません。

また、-fを-Fと大文字で書いてしまうと、スクリプトファイルの指定ではなく、フィールドセパレータの指定をしたことになってしまいます。
ここは、DOSプロンプトなど知らない若い学生は、指示されたとおり、厳密に大文字で入力しようとしますが、昔のcommand.com時代を知っている人は、大文字小文字は同じだよね…という思い込みで勝手に読み替えてミスしてしまう所です。

なお、Gawk にはigawk.exeというものが同梱されている場合がありますが、これはawkそのものではありません。
WILLs版での説明によると、環境変数から文字列を引っ張ってきて、gawkを子プロセスで呼び出す機能を提供するもののようです。


その他、試していないモノ


[戻る]

copyright 2008~ 谷本玲大
http://www.tanimoto.to/