Моя цель - подсчитать сумму столбца, который соответствует другому столбцу в csv.
Например, у меня есть вход CSV, который выглядит так
"500","my.jpg"
"500","my.jpg"
"200","another.jpg"
Я хочу вывод:
[{ bytes: 1000, uri: "my.jpg" }, { bytes:200, "another.jpg" }]
Примечание: мне нужно сделать это как поток, поскольку для данного csv может быть более 3 миллионов записей, а зацикливание слишком медленное.
Мне удалось сделать это с помощью awk
, но я изо всех сил пытаюсь реализовать его в узле
Вот скрипт bash, использующий команду awk
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
Любые указатели в правильном направлении будут высоко оценены