awk > 基本的な使い方

更新日 2015-09-05
広告
awkの基本的な使い方を紹介します。

インストール

Ubuntuであれば、aptでインストールできます。が、LinuxやMac OSであれば、デフォルトでインストールされていると思います。
 $ sudo apt-get install gawk
以下のように表示されれば、awkのインストールは完了しているでしょう。
$ which awk
/usr/bin/awk

awkコマンドの構文

awkコマンドの基本的な構文は、以下のようになります。
 $ awk '{ awkのコード }' ファイル名
「awkのコード」の部分に書いたコードが、ファイルの各行に対して実行されます。

ファイルの内容を出力

awkで扱うファイル sample.dat を、以下に記します。
1 10 100
2 20 200
3 30 300
このファイルの内容を出力してみます。
$ awk '{ print $0; }' sample.dat
1 10 100  # print $0; を実行
2 20 200  # print $0; を実行
3 30 300  # print $0; を実行
printは、文字列を標準出力する関数です。 変数「$0」には、現在処理している一行の内容が格納されています。なので、上記のように、ファイルの内容がそのまま表示されることになります。

各行の、各列を出力

変数「$0」には、現在処理している一行が格納されています。さらに、awkは、その一行を空白で分割して、それらを変数「$1」や「$2」に格納してくれています。変数「$1」には、行の一列目の値が、「$2」には、二列目の値が、、、というふうに、格納されています。以下の実行内容を見てみましょう。
$ awk '{ print $1","$2","$3; }' sample.dat
1,10,100
2,20,200
3,30,300
上記の例では、sample.dat の各列をカンマ(,)で連結して出力しています。

計算した結果を出力

各行の3つの値を、合計して出力してみます。
$ awk '{ print $1 + $2 + $3; }' sample.dat
111
222
333

普通にプラス(+)で変数をつなげば、加算ができます。

減算もできます。

$ awk '{ print $1 - $2 - $3; }' sample.dat
-109
-218
-327
乗算もできます。
$ awk '{ print $1 * $2 * $3; }' sample.dat
1000
8000
27000
除算もできます。
$ awk '{ print $1 / $2 / $3; }' sample.dat
0.001
0.0005
0.000333333
小数点の桁数を指定して出力したい場合は、printfを使います。 たとえば以下は、$1の内容を、小数点以下6桁で表示する例です。
$ awk '{ printf "%.6f\n", $1 }' sample.dat
余りを計算(mod)することもできます。
$ awk '{ print $2 % 3; }' sample.dat
1  # 10 % 3 -> 1
2  # 20 % 3 -> 2
0  # 30 % 3 -> 0

複数の計算式を実行

当然、複数の計算式を実行することもできます。式の終わりにセミコロン(;)をつけることで、式を区切ることができます。
$ awk '{ sum = $1 + $2 + $3; print sum; }' sample.dat
111
222
333
上記の例では、「sum」という変数を定義しています。このように、awkでは、型を指定せずに変数を定義できます。
広告
お問い合わせは sweng.tips@gmail.com まで。
inserted by FC2 system