2011年3月4日金曜日

AWKで入力ファイルの指定を不要にする方法 - AWK

AWKプログラムを動かす
AWKのパターンと制御文
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○awk
AWKプログラムの書き方を工夫すると、入力ファイルの指定が無くても動かす事が出来ます。


**** 原理
o 次の時、AWK は入力ファイルが無くても、データ入力を要求せずに動きます。
    + BEGIN パターン以外のパターンを書かない時。
    + もしくは、BEGIN パターン内で入力ファイルを設定した時。
o ですので、入力ファイルの指定を不要にしたい時は、この条件のどちらかを満たすように書きます。


**** 手順
o BEGIN パターンだけ書く方法
--------
BEGIN {
    print "眠れない時は、";
    for (i = 1; i <= 39; ++i) {
        print "ミクさんが " i "人。";
    }
}
--------

    + 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。

o 入力ファイルをプログラムで追加する方法
--------
BEGIN {
    ARGV[ARGC++] = "ミクさんの食べ物リスト.txt";
}
{
    print $0;
}
--------

    + 詳しくは、「AWKの入力ファイルを、AWKプログラムの中で追加、削除(= キャンセル)する方法


**** メモ
o BEGIN パターンだけの使い方は、特に、大量のテストデータを作る時に便利です
    + 問題が起きた時はメモ帳でも修正出来ますし、持ち運びも簡単です。
    + テスト終了後、テストデータは削除してしまっても、後で再作成出来ます。
o プログラムが途中で止まっているように見える時は、試しに文字を入力してみます。
    + 文字が入力出来る時は、AWKが、画面からのデータ入力を要求しています。
    + そのような時は、「Ctrl」キーを押しながら「Z」キーを押すと先に進みます。
    + 詳しくは、「入力ファイルを手入力する方法


**** 確認した処理系
o Gawk on Windows 3.1.7
o Gawk for Windows 3.1.6
o mawk MBCS (32bit版) 1.3.3
o Mawk for Windows 1.3.3
o original = the one true awk(updated May 1, 2007)


==
関連ページ:
    ▼AWKプログラムを動かす
    ▼AWKのパターンと制御文▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > AWKの入力ファイルを、AWKプログラムの中で追加、削除(= キャンセル)する
    入力ファイルを手入力する
    AWKPATH = コマンドでAWKファイル名を指定する時、ファイルの場所を省略する(Gawk, mawk32専用)
    BEGIN = 最初に実行する