nawk を使用して、$1、$2、$3 フィールドのすべての数値を合計するにはどうすればよいですか?

nawk を使用して、$1、$2、$3 フィールドのすべての数値を合計するにはどうすればよいですか?

$1nawk を使用して、、、およびフィールド内のすべての数値を合計するにはどうすればよいです$2か?$3

8     6     2

7     3     5

1     9     4

結果の合計が45になるようにしたい

答え1

nawk 'BEGIN { sum=0; } {sum += $1 + $2 + $3;} END { printf "%d\n", sum } ' a.in

答え2

awk を使用する:

awk '{x+=$0;}END{print x}' RS="[ \n]"  file

これは行数や列数に関係なく機能します。レコード区切り文字 (RS) をスペースまたは改行文字として使用すると、すべての値が個別の行に分割されるため、簡単に追加できます。

答え3

coreutils と bc を使用することもできます。

<file head -c-1 | tr ' \n' '++'; echo) | bc

いくつかの列を省略する必要がある場合、たとえば入力が次のようになる場合:

A 8 6 2
B 7 3 5
C 1 9 4

cut必要なものを選択できます:

<file cut -d' ' -f2- | head -c-1 | tr ' \n' '++'; echo) | bc

どちらの場合も出力は次のようになります。

45

関連情報