2013-03-21 124 views
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 

如果可能,我需要一個班輪。

回答

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
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