加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读