私はしかしはるかに大きく、次のようなものであるデータセットを持っている:awkの減算レコード
5 6 9
2 4 6
4 5 1
私は現在の1から各レコードにすべてのフィールドを引くことができるようにしたい、そして、一緒に店にそれらを追加します結果。例えば、ここでは最初の行(5-2)+(6-4)+(9-6)=結果から始めたいと思います。また、(5-4)+(6-5)と(9-1)。 2行目(2-4)+(4-5)+(6-1)、(2-5)+(4-6)+(6-9)など、他のすべての行についても同様に行う。データセットが大きいしかし
{
if (max_nf < NF)
max_nf = NF
max_nr = NR
for (x = 1; x <= NF; x++)
vector[x, NR] = $x
}
END { result = ((vector[1,1] - vector[1,2]) + (vector[2,1] - vector[2,2]) + (vector[3,1] - vector[3,2]))
}
を、そして私が働いてもらうように見えることはできませんこれを行うためのループを、希望:次のように私はこれを手動で行うことができます。これは検出または不正な入力をインテリジェントに扱うの試みませんことを
BEGIN { getline; fields = NF+1; for (i=1; i<fields; i++) first[i] = $i; }
{
total = 0;
for (field = 1; field < fields; field++)
total += first[field] - $field;
printf("%d\n", total);
}
注:
そして、何あなたは*と*やりたいん:質問に与えられたサンプルデータについて
、これは予想される結果を生成結果?すべての値を印刷しますか? –