AWK

About

UNIX系OSでテキスト処理用途に用いられる。

プラットフォームによって実装が異なる。 https://en.wikipedia.org/wiki/AWK#Versions_and_implementations を参考に。

Getting Started

参考:

Documentation

参考:

awkコマンド

# AWKスクリプトが短いとき
command-output-text | awk '{ AWK SCRIPT }'
awk '{ AWK SCRIPT }' INPUT_FILE1 INPUT_FILE2...

# AWKスクリプトが長いとき
command-output-text | awk -f scirpt.awk
awk -f scirpt.awk INPUT_FILE1 INPUT_FILE2...

# おまけ: AWKスクリプトが実行可能なとき
command-output-text | scirpt.awk
Option機能
-F<c>フィールドの区切り文字を <c> に変える。例: -F, でカンマ区切り
-v <KEY>=<VALUE>awkスクリプト内で使える変数を設定する。 -v x=y を繰り返すことで複数設定可

参考:

スクリプティング

#!/usr/bin/awk -f

BEGIN { print "start" }
/<pattern>/ { print } # <pattern>マッチ時に行を出力
NR % 2 == 0 { print } # 偶数行を出力
            { print } # 無条件で出力
END   { print "end" }

Tips:

  • # でコメントを書ける

NOTE:

  • シバンに #!/usr/bin/env awk -f のように記すことはできない

How-to

ワンライナー

# マッチする行のみ表示
awk '/abc/' sample.tsv
# awk '/abc/ {print $0}' sample.tsv と同じ。以下同

# 偶数行だけを出力
awk 'NR % 2 == 0' sample.tsv

# N行目以降を出力
awk -v n=5 'NR > n' sample.tsv