AWK の約束ごとと基本的使い方
AWK の約束ごと
多くのプログラム言語と同様に、
AWK にもいくつかの約束ごとがあります。
これを知らないと AWK が使えないので、
ここでまとめておきましょう。
- C言語とほぼ同様なプログラミングができる
(著者が Fortran ではなく、Cを使う理由の一つはここにあります)
- Cとは違い、すべての変数は型宣言がいらない
- Cとは違い、すべての変数は 0 に初期化されている
- $0 すべてのコラムの値
- $1 第一コラムの値
- $2 第二コラムの値
- ...
- NR Number of Lines (現在の行数)
- NF Number of Fields (列数)
基本的使い方
AWK を使うには、2通りの方法があります。
例として、
----------------------------------
#時間 時系列
1 0.12
2 0.42
3 0.53
.....
----------------------------------
なるデータファイル(名前は time.dat)を取り上げます。
なお、---- は見やすくするために書いたもので、
ファイルには存在しないとしておきます。
このデータファイルに対して、awk を噛ました例を
出力と共に示します。
----------------------------------
例1:
----------------------------------
prompt> awk '{print $1}' time.dat
#時間
1
2
3
...
prompt>
----------------------------------
例2:
----------------------------------
prompt> awk '{print $2}' time.dat
時系列
0.12
0.42
0.53
...
prompt>
----------------------------------
例3:
----------------------------------
prompt> awk '$0!~/#/{print $1*$2}' time.dat
0.12
0.84
1.59
.....
prompt>
註:$0!~/#/ は、行の中に # という記号がなかったら
以下を実行しなさい、と言う意味
----------------------------------
例4:
----------------------------------
prompt> awk '{print $0}' time.dat
#時間 時系列
1 0.12
2 0.42
3 0.53
.....
prompt>
----------------------------------
例5:
----------------------------------
prompt> awk '{print NF}' time.dat
2
2
2
...
prompt>
註:NF は列の数を示しており、いま列の数は等しく2列だから
----------------------------------
先の例1の場合には、
----------------------------------
{print $1}
----------------------------------
と書いたファイル(名前は print.awk としておく)を作ります。
そして、コマンドラインから
----------------------------------
awk -f print.awk time.dat
----------------------------------
と打ち込めばOKで先の例1と同じ出力が得られます。
-f は AWK Script のファイルを指定するオプションです。