いつから表示列を絞るツールと錯覚していた?
こんな捉え方をしておくとよい。
awk 'パターン1 { アクション1 }; パターン2 { アクション2 };...'
条件にマッチしたレコード(デフォルトは標準入力の行)に対してアクションを実行する
パターンは , 区切りで複数書けて、 cond1,cond2 のとき、cond1が真の行からcond2が真になる行までを実行する
BEGIN , END は各行とは別に、プログラムの最初と最後に実行される。初期化とクリンナップに。BEGINFILE , ENDFILEはファイルの最初と最後。パターンを省略すると全て、アクションを省略するとレコードをそのまま表示
パターンには正規表現も使える!
$1 ~ /^#/ { ... } # 第1フィールド先頭が#で始まっていたらマッチ
複数行のプログラムを書ける。そんなに癖もなさそう
map や 多次元配列 などの構造も使える
プログラム中からリダイレクトできるので、特定の条件にマッチした行だけ別のファイルに出力したいできる
なんとパイプも使えるらしいが、全行処理した結果がソートされているように見える
$ ps -axu | awk '{ print $5, $11 | "sort -n" }'
外部コマンドを叩くこともできるらしい。上の例は | で sort を叩いている