
shell脚本对多个文件数值相加
举个例子,有多个文件,filename1.csv、filename2.csv、filename3.csv。。。(实际还有很多,列数也比这多,有10列)catfilenam...
举个例子,有多个文件,filename1.csv、filename2.csv、filename3.csv。。。(实际还有很多,列数也比这多,有10列)
cat filename1.csv
2014,name1,1,5,10
2014,name2,1,4,6
2014,name1,0,3,8
2014,name2,0,0,0
cat filename2.csv
2014,name1,1,3,2
2014,name2,0,5,5
2014,name1,0,3,3
2014,name2,1,1,0
cat filename3.csv
2014,name2,1,5,5
2014,name1,1,6,6
2014,name2,0,3,3
2014,name1,0,1,1
希望这三个文件相加后的结果如下:
2014,name1,1,14,18
2014,name1,0,7,12
2014,name2,1,10,11
2014,name2,0,8,8
也就是说,当前三列相等时,后两列数值相加,
前三个不等的,不相加,
文件相加结果保存在一个单独的文件中 > result.csv中
相加的文件中每一行(FNR相等的行)对应的前三列数据不一定一样
本人初级shell脚本,总共只有5分,,求大师解答中,感激不尽。。 展开
cat filename1.csv
2014,name1,1,5,10
2014,name2,1,4,6
2014,name1,0,3,8
2014,name2,0,0,0
cat filename2.csv
2014,name1,1,3,2
2014,name2,0,5,5
2014,name1,0,3,3
2014,name2,1,1,0
cat filename3.csv
2014,name2,1,5,5
2014,name1,1,6,6
2014,name2,0,3,3
2014,name1,0,1,1
希望这三个文件相加后的结果如下:
2014,name1,1,14,18
2014,name1,0,7,12
2014,name2,1,10,11
2014,name2,0,8,8
也就是说,当前三列相等时,后两列数值相加,
前三个不等的,不相加,
文件相加结果保存在一个单独的文件中 > result.csv中
相加的文件中每一行(FNR相等的行)对应的前三列数据不一定一样
本人初级shell脚本,总共只有5分,,求大师解答中,感激不尽。。 展开
1个回答
展开全部
awk -F',' '{SUBSEP=",";arr[$1,$2,$3]+=$4;trr[$1,$2,$3]+=$5} END{for (i in arr) print i "," arr[i]","trr[i]}' filename1.csv filename2.csv filename3.csv
输出结果:
2014,name1,0,7,12
2014,name2,0,8,8
2014,name1,1,14,18
2014,name2,1,10,11
希望能帮助到你,你的好评是我前进的动力!谢谢!
输出结果:
2014,name1,0,7,12
2014,name2,0,8,8
2014,name1,1,14,18
2014,name2,1,10,11
希望能帮助到你,你的好评是我前进的动力!谢谢!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |