Как отобразить некоторую информацию из CSV-файла в Bash Ubuntu - PullRequest
0 голосов
/ 24 марта 2020

У меня есть CSV-файл, подобный этому:

,2019 - October,,2019 - September,,2019 - August,
,Agricultural,Industrial,Agricultural,Industrial,Agricultural,Industrial
Toronto,86746,382958,55833,348182,49313,355977
Montreal,70718,605909,22084,549823,23428,641181
Calgary,231493,1420226,114937,1249378,114243,1189979
TOTAL,388957,2409093,192853,2147384,186984,2187137

Я должен сделать скрипт для отображения некоторой информации из файла следующим образом:

2  388957  388957
3  2409093  2409093
.. ......   ....

Например, в в первой строке номер 2 соответствует номеру столбца (отображение начинается в столбце B), следующий номер соответствует сумме строк 3-5 столбца B, а последний номер соответствует номеру в строке ВСЕГО. Вторая строка - это тот же бой, что и для столбца C и т. Д. Из столбца B в столбец G.

Как это можно сделать в Bash Ubuntu?

попытался сделать это, но это не сработало:

#!/bin/bash
INPUTFILE="/media/exports.csv"
FIELD=2
COUNT=`sed 's/[^,]//g' $INPUTFILE | wc -c`; let "COUNT+=1"
while [ "$FIELD" -lt "$COUNT" ]; do
  awk 'BEGIN{FS=",";sum=0}{if(NR>=3&&NR<=5)sum=sum+$FIELD}END{print$FIELD,sum, (tail -1), "\n"
}' /media/exports.csv
let "FIELD+=1"
done

При запуске этого скрипта информация отображается следующим образом:

TOTAL,388957,2409093,192853,2147384,186984,2187137 0 -1

Этот результат повторяется много раз. Что я делаю не так?

...