sed(或awk)对csv文件中的值求和

时间:2013-03-21 13:21:07

标签: csv sed awk

我有一个csv文件,其中的行如下所示:

foo,bar,baz,5,6,8
zab,rab,oof,2,2,3

我需要一个命令来转换它总结最后3个值:

foo,bar,baz,19
zab,rab,oof,7

如果可能,我需要一个衬垫。

2 个答案:

答案 0 :(得分:3)

尝试固定长度:

awk -F, '{print $1,$2,$3,$4+$5+$6}' OFS=, file

对于不固定的长度:

awk -F, '{for(i=1;i<NF-2;i++)printf("%s,", $i)}{print $NF+$(NF-1)+$(NF-2)}' file

不适合算术。

答案 1 :(得分:1)

perl -F, -lane '$a+=$_ for(@F[3..5]);print join ",",@F[0..2],$a' your_file

下面的小测试:

> echo "foo,bar,baz,5,6,8" | perl -F, -lane '$a+=$_ for(@F[3..5]);print join ",",@F[0..2],$a'
foo,bar,baz,19