sed、awk、およびPerlを使用して新しい列の行を合計しますか?

sed、awk、およびPerlを使用して新しい列の行を合計しますか?

数値を含むファイルがあります。たとえば、次のようになります。

1 11 323
2 13 3
3 44 4
4 66 23
5 70 23
6 34 23
7 24 22
8 27 5

行を合計して結果を列に出力するにはどうすればよいですか?結果は次のとおりです。

1 11 323 335
2 13 3 18
3 44 4 51
4 66 23 93
5 70 23 98
6 34 23 63
7 24 22 53
8 27 5 40

sed、awk、Perlのソリューションを見たいです。

ベストアンサー1

Perlソリューション:

perl -MList::Util=sum -lane 'print "@F ", sum(@F)' < data.txt
  • -n入力を1行ずつ読みます。
  • -l入力から改行文字を削除し、出力に追加します。
  • -a各入力ラインを余白の @F 配列に分割します。
  • リスト::ユーティリティこのsum機能が提供されるため、数値を直接合計する必要はありません。

sedでは操作はほとんど不可能ですが、sedを使用してスペースをプラス記号に変換し、それをsumのソースとして使用し、bc結果を入力に貼り付けることができます。

paste -d ' ' data.txt <(sed -r 's/ /+/g' data.txt | bc)

おすすめ記事