gpt4 book ai didi

用于隐式循环第一行的 Perl 累加器数组? (执行类似 sql 的 GROUP BY 总和)

转载 作者:行者123 更新时间:2023-12-02 08:18:25 28 4
gpt4 key购买 nike

我想汇总以下按月分组的数据(我的亚马逊支出按月汇总):

输入:

2016-08     $5
2016-08 $10
2016-09 $7
2016-09 $6
2016-10 $7
2016-10 $5

输出:

2016-08     $15
2016-09 $13
2016-10 $12

而且我在网上看到了很多丑陋的解决方案。我想像使用正则表达式替换(即隐式循环)一样使用 perl -pe 语法。

这可以做到吗,也许用一个数组这样的“隐式变量”?

我想象命令是这样的:

cat mydata.csv | perl -pe 's{(.*)\s*(.*)}{dict[$1] = $1 , dict[$1] += $2 }ge END { print @dict}'

回答

请记住,在非严格模式下,您不需要声明任何变量,包括数组。您可以按照接受的答案指示使用它们。

最佳答案

您可以像使用 AWK 一样使用 Perl,并引用 @F 中的字段:

perl -alne '$F[1]=~tr/$//d; $tot{$F[0]} += $F[1];
END { for $d (sort keys %tot) { print "$d\t\$$tot{$d}" } }' mydata.csv

请注意,您必须处理美元符号,将其剥离并重新添加。

关于用于隐式循环第一行的 Perl 累加器数组? (执行类似 sql 的 GROUP BY 总和),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39842665/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com