by shigemk2

当面は技術的なことしか書かない

awk

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

なかなか味のあるコマンドではなイカ。