目標はタイトルの通り。
ここでは、とあるファイルdata.txtの4列目を、3列目の一行目(3列目の一番初め)で規格化したいとする。
列全体における操作なのでawkを使ってみる。
まず最初にしないといけないのは、3列目の一行目(3列目の一番初め)を抽出して変数KIKAKUに格納すること。
そのために、
KIKAKU=$(awk NR==1'{print $3}' data.txt)
を行う。
続いて、規格化を行い、結果はdata_kikaku.txtにいれるとすると、
awk '{print $1,$2,$3,($4/KIKAKU)}' data.txt > data_kikaku.txt
###注意
KIKAKUが0の場合は割り算ができないので、「0でなければ」という条件を付加する。
cat data.txt | awk '
{
if (KIKAKU != 0 ) {
print $1,$2,$3,($4/KIKAKU)
}
}
'
と条件をつける。
awk内におけるif構文では、!=がnot equalを表す。