【发布时间】:2019-01-16 22:38:58
【问题描述】:
我的目标是计算与 csv 中另一列相关的列的总和。
例如,我有一个输入 csv,看起来像这样
"500","my.jpg"
"500","my.jpg"
"200","another.jpg"
我希望输出是:
[{ bytes: 1000, uri: "my.jpg" }, { bytes:200, "another.jpg" }]
注意:我需要以流的形式执行此操作,因为给定的 csv 可能有超过 300 万条记录,并且循环太慢了。
我已经设法使用awk 完成了这项工作,但我正在努力在节点中实现它
这是使用 awk 命令的 bash 脚本
awk -F, 'BEGIN { print "["}
{
gsub(/"/, ""); # Remove all quotation from csv
uri=$2; # Put the current uri in key
a[uri]++; # Increment the count of uris
b[uri] = b[uri] + $1; # total up bytes
}
END {
for (i in a) {
printf "%s{\"uri\":\"%s\",\"count\":\"%s\",\"bytes\":\"%s\"}",
separator, i, a[i], b[i]
separator = ", "
}
print "]"
}
' ./res.csv
任何正确方向的指针将不胜感激
【问题讨论】: