1

私は次のことを達成しようとしていますが、プログラミングのトピックではまったく新しいものであり、夢中になっています。列の合計などを作成する方法が説明されている多くの例を見てきましたが、同じ行から値を追加する方法はありません。コマンドで何かしようとしましたawkが、まったく役に立ちませんでした...

私はこの入力を持っています:

10000   4.32078125e-05 2.319742728e-05 -1.626118465e-06 2.116442767e-05 2.824876608e-06 -2.008498137e-07 1.378852315e-11 -2.461344776e-11 -1.185369303e-11 -4.711965783e-11 -7.488327241e-10 -1.133857758e-08

非常に多くの数字に夢中にならないように、次のようにします。

#Iteration #FpX #FpY #FpZ #FvX #FvY #FvZ #MpX #MpY #MpZ #MvX #MvY #MvZ

そして、次の出力が必要です (最初の行はテキストです):

Iteration      FX        FY         FZ         MX       MY        MZ
#Iteration #FpX+#FvX #FpY+#FvY  #FpZ+#FvZ  #MpX+#MvX #MpY+#MvY #MpZ+#MvZ
4

2 に答える 2

2

<N>を介して th 列 (フィールド) を参照できます$<N>。たとえば、$1これを使用して算術演算を行うことができます。

$ cat foo.input
10000   4.32078125e-05 2.319742728e-05 -1.626118465e-06 2.116442767e-05 2.824876608e-06 -2.008498137e-07 1.378852315e-11 -2.461344776e-11 -1.185369303e-11 -4.711965783e-11 -7.488327241e-10 -1.133857758e-08
10001   1              2               3                4               5               6                7               8                9                10               11               12

$ awk \
    'BEGIN { printf "%-11s %-12s %-12s %-12s %-12s %-12s %-12s\n", "Iteration", "FX", "FY", "FZ", "MX", "MY", "MZ"  }
     NF    { printf "%-11s %-12s %-12s %-12s %-12s %-12s %-12s\n", $1, $2+$5, $3+$6, $4+$7, $8+$11, $9+$12, $10+$13 }' foo.input
Iteration   FX           FY           FZ           MX           MY           MZ
10000       6.43722e-05  2.60223e-05  -1.82697e-06 -3.33311e-11 -7.73446e-10 -1.13504e-08
10001       5            7            9            17           19           21
于 2013-08-01T09:52:11.507 に答える