2
我有一个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
如果可能,我需要一个班轮。
我有一个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
如果可能,我需要一个班轮。
试试这个固定长度:
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
sed不是算术的工具。
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