3の代わりにn列にawk '{print $ 1 + $ 2 + $ 3} file1> file2をどのように作成しますか?

3の代わりにn列にawk '{print $ 1 + $ 2 + $ 3} file1> file2をどのように作成しますか?
awk '{ for (i = 1; i <= NF; i++) sum[i]+=$i} END{for (i in sum) print sum[i]}' file1 > file2

これはレコードごとの合計には役立ちますが、同様のスキームは列別の合計には役立ちません(おそらく)。 n 列に対する列別の追加を一般化するには?

cat file1
23 46 45
45 57 58
56 78 74

cat file2
114
160
208

ベストアンサー1

各レコードのフィールドの合計を計算するには、次の手順を実行します。

awk '{sum = 0; for (i = 1; i <= NF; i++) sum += $i; print sum}' < file1 > file2

中かっこで始まる行動先行せずに各入力行で実行されるステートメント。状況これにより、実行は以下を満たす行に制限されます。状況

各行:

  1. 変数をsumゼロに初期化します。
  2. フィールド#1で始まり、最後のフィールド(特殊変数)で終わり、NFそのフィールドの値()だけ増加しながらフィールドを繰り返します。sum$i
  3. 変数の値を印刷しますsum

おすすめ記事