2011年2月2日水曜日

AWKプログラムを簡単に書く方法 - AWK

AWKのパターンと制御文
AWKプログラムを書く
o パターンを3種類覚えます。
o そして、必要な機能を探して、パターンの中に並べます。
o 上手に書けたと思ったら、実行してみます。


**** 覚えるパターン 3つ
o BEGIN パターン = プログラムの先頭で「1回だけ」実行したい時に、追加します。
--------
BEGIN {
  # ファイルを読み込む前に実行します。
}
--------

    + # の行は、コメントです。
    + 実際には、# の行に、そこで行いたい事を書きます。

o 先頭に何も書いていないパターン = ファイルを1行ずつ読み込みたい時に、追加します。
--------
{
  # 1行毎に実行します。くるくる回ります。
}
--------


o END パターン = プログラムの最後に「1回だけ」実行したい時に、追加します。
--------
END {
  # ファイルを全部読み込んだ後に実行します。
}
--------



**** 実行例
o ファイル sample.awk
--------
{
  print $0 "、おはようございます。";
}
END {
  print "皆さん、今日もよろしくお願いします。";
}
--------

    + 行末のセミコロンは無くても動きます。C言語風にしてみました。
    + $0 には、読み込んだ 1行分のデータが入っています。
    + ファイル名の後ろに拡張子(.txt など)が表示されていない場合は、「ファイルの拡張子を変更可能にする方法

o ファイル in.txt
--------
ミクさん
リンちゃん
レン君
ルカ様
--------


o 実行コマンド
--------
gawk -f sample.awk in.txt
--------

    + Windowsの場合、gawk の部分は、gawk.exe を呼び出すよう、必要に応じて書き換えます。
    + 詳しい動かし方は、「AWKプログラムを別ファイルに書いて実行する方法


**** メモ
o この手順を覚えたら、後は、必要な機能を探して、パターンの中に並べるだけです。
o パターンは、これらの他にもあります。3つのパターンに慣れてきたら、他のパターンも覚えてみます。


**** 確認した処理系
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のパターンと制御文▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > AWKで最も短いプログラム
    AWKプログラムの基本パターン
    AWKの関数名と変数名を区別する方法
    タブ区切りでファイルを読み込む