2

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

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

我需要一个命令来对其进行转换,并对最后 3 个值求和:

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

如果可能的话,我需要一个班轮。

4

2 回答 2

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

不是算术的正确工具。

于 2013-03-21T13:29:00.890 回答
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
于 2013-03-21T13:51:17.180 回答