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 まで。