awk(おーく)は、入力データ1行ごとに各列の様々な処理を行うコマンドである。
printしたり、2倍したり…
ここで、行とはファイルデータの横のライン、列とは縦のラインである。
awkを用いると、例えば「ファイルの2列目を2倍する」というような操作もコマンドライン一行で可能になる。
% awk '条件文{実行文}' ファイル名
awk内の変数。
NF :列の数
NR :行の数。
FILENAME :今読み込んでいるファイルの名前
例1: 1列目はそのまま、2列目は2倍、3列目は3で割る
% awk '{print $1,$2*2.0,$3/3.0}' datafile
例2: ファイルの2、3行目を表示する
% cat hoge.rb | awk 'NR==2,NR==3 {print}'
例3: 実行しているプロセスの中からhogeで終わるプロセスをサーチして、
そのプロセスのプロセス識別子をawkでサーチして、得られた識別子でプロセスをkillする
% ps auxw | egrep "hoge .*hoge$" | awk '{print $2}' | xargs kill
なかなか味のあるコマンドではなイカ。