bash – 当字段在文件中匹配时,在csv中对多行进行求和
发布时间:2020-12-16 01:47:42 所属栏目:安全 来源:网络整理
导读:我有一个文件,我已经修剪下来,如下所示: "Reno","40.00""Reno","80.00""Reno","60.00""Lakewood","150.00""Altamonte Springs","50.25""Altamonte Springs","25.00""Altamonte Springs","25.00""Sandpoint","50.00""Lenoir City","987.00" 等等 我想最终得
我有一个文件,我已经修剪下来,如下所示:
"Reno","40.00" "Reno","80.00" "Reno","60.00" "Lakewood","150.00" "Altamonte Springs","50.25" "Altamonte Springs","25.00" "Altamonte Springs","25.00" "Sandpoint","50.00" "Lenoir City","987.00" 等等 我想最终得到的是每个城市的总金额的总和.那是: "Reno","220.00" "Lakewood","100.25" 等等. 公平的警告,数据集不一定是连续的 – 也就是说,一个城市可能在这里出现一次,一次一千行,最后三次. 我一直在尝试使用以下awk脚本: awk -F "," '{array[$1]+=$2} END { for (i in array) {print i"," array[i]}}' test1.csv > test6.csv 结果我看起来像这样: "Matawan",0 "Bay Side",0 "Pataskala",0 "Dorothy",0 "Haymarket",0 "Myrtle Point",0 等等.第二列全部为零,没有引号. 我显然错过了一些东西,但我不知道要看什么或其他什么.我错过了什么? 谢谢. 解决方法
你失败的原因是因为双引号.
做这样的事情: sed 's/"//g' file.csv | awk -F "," '{array[$1]+=$2}END{for(i in array) {print """ i """ "," """ array[i] """ }}' "Lenoir City","987" "Reno","220" "Lakewood","150" "Sandpoint","50" "Altamonte Springs","100.25" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |