30. awk

目次へ 前の項目へ

awk は「パターン処理言語」と呼ばれるものです。なかなか奥が深いの で、今日はやはり雰囲気をつかむだけにとどめますが、UNIX系のシステムに表計 算ソフトがなかなか登場しなかったのも、この awk があったためでも あります。そのくらい便利な機能があるのです。

awk とは、開発者三人の名前の頭文字を取ったもので、オークと読みま す。使用はコマンド形式でもスクリプトでも可能で、他の言語のように if による条件分岐や for などのループ、printなどの出力 命令なども使用できます。特徴は、表のようにスペースやカンマで区切られたデー タからフィールドと呼ばれる区分わけを行ってデータを扱えることです。次の例 で見てみましょう。

下の表は、最近四ヶ月間の三人の売り上げデータ成績だと思ってください。

Suzuki 100  80  90 100
Tanaka  60  80  50  70
Yamada  80 100  80  90

このデータから3人の売り上げ平均を計算してみます。上のデータがdata.txtとい う名前で保存してあるとすると、次のようなコマンドで実行できます。

$ awk '{print $1,($2+$3+$4+$5)/(NF-1)}' data.txt

実行結果は次のようになるはずです。

Suzuki 92.5
Tanaka 65
Yamada 87.5

これまでいろいろとプログラミングを行ってきましたので、処理自体はなんとなく お分かりになるのではないでしょうか。元のデータをフィールドに分けてそれらを $1 から $5 までの変数に格納し、一行ごとに計算を行ってい ます。また、NFというのはフィールドの数を表す定数ですので、名前の部分をの ぞくため、平均の計算ではフィールド数から1を引いて割り算しています。


ページの先頭へ目次へ 前の項目へ