次のように、3 フィールド x 2 行のファイルでいくつかの計算を行ってきました。
3216.01 2724.81 1708.25
1762.48 617.436 1650.79
私の質問は、最初の行の最初のフィールドを参照し、同じ計算で 2 行目の最初のフィールドを参照するにはどうすればよいですか?
最後に、$1 (行 1) を取り、$1 (行 2) を引いてから、他の列に対して同じことを 2 乗して実行し、最後にこの値を合計することを計画しています。
この行はあなたの要件で動作します:
awk 'NR==1{for(i=1;i<=NF;i++)a[i]=$i}
NR==2{for(i=1;i<=NF;i++)s+=(a[i]-$i)^2; printf "sum: %.3f",s}' file
結果:
sum: 6557076.288
ノート
%.3f
。必要に応じて変更できます編集
EdMorton が提案したように、上記のコードは次のように記述できます。
awk 'NR==1{split($0,a)}
NR==2{for(i=1;i<=NF;i++)s+=(a[i]-$i)^2; printf "sum: %.3f\n",s}' file
非常に良い提案です。私は分割について考えていませんでした... Ed に感謝します!
私は通常、いくつかの一時変数でそれを話します
awk 'NR>1 {print $1-a} {a=$1}' inputfile