awk

awkは効率的にテキスト処理を行うことができます。

[vagrant@localhost awk]$ awk --version
GNU Awk 3.1.7
Copyright (C) 1989, 1991-2009 Free Software Foundation.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.

本プログラムは、利用価値があることを期待して配布されていますが、
これは、特定目的に使用可能であること、及び、商用目的に使用できる
ことを暗示するものではなく、いかなる保証も一切ありません。
詳しくは、GNU General Public License を参照してください。

You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
{ print $3 }
[vagrant@localhost awk]$ awk -f ex1.awk sales.dat

コマンドラインで、1行で表すこともできます。
awk ‘{print $3}’ sales.dat

行番号の表示

{
print NR ":" $0
}

パターン

NR < 5{
  print NR ":" $0
}

NR > 10{
  print NR ":" $0
}

FS

BEGIN{
 print "--start --"
 FS = "-"
}
{
 print $1
}
NR < 5{
  # print NR ":" $0
}

NR > 10{
  # print NR ":" $0
}
END {
  print "-- end --"
}

条件

(NR == 5) || (NR > 10){
  print NR ":" $0
}

正規表現

$2 ~ /item-[23]/ {
 print $0
}

printとprintfの違い

{
 printf("%s %d\n", $1, $3)
}

表示を整理

{
 printf("%-10s %5d\n", $1, $3)
}

変数

BEGIN{
  sum = 0
}
{
 sum = sum + $3
}
END{
  print sum
}

組み込み関数

{
  printf("%f, %d\n", rand(), int($3/3))
}