#!/usr/bin/env bash
target="id" # the field you want to sum
target_idx= # the column number of that field
sum=0 # the sum that wal found so far
{
# first, just read the header...
IFS=, read -r -a header
for idx in "${!header[@]}"; do # and look for the id field in it
[[ ${header[$idx]} = $target ]] && { target_idx=$idx; break; }
done
[[ $target_idx ]] || { echo "ERROR: No $target field found" >&2; exit 1; }
# then, iterate over other lines
while IFS=, read -r -a line; do
sum=$(( sum + ${line[$target_idx]} ))
done
}
echo "$sum"
IyEvdXNyL2Jpbi9lbnYgYmFzaAoKdGFyZ2V0PSJpZCIgICAjIHRoZSBmaWVsZCB5b3Ugd2FudCB0byBzdW0KdGFyZ2V0X2lkeD0gICAjIHRoZSBjb2x1bW4gbnVtYmVyIG9mIHRoYXQgZmllbGQKc3VtPTAgICAgICAgICAjIHRoZSBzdW0gdGhhdCB3YWwgZm91bmQgc28gZmFyCgp7CiAgIyBmaXJzdCwganVzdCByZWFkIHRoZSBoZWFkZXIuLi4KICBJRlM9LCByZWFkIC1yIC1hIGhlYWRlcgogIGZvciBpZHggaW4gIiR7IWhlYWRlcltAXX0iOyBkbyAgIyBhbmQgbG9vayBmb3IgdGhlIGlkIGZpZWxkIGluIGl0CiAgICBbWyAke2hlYWRlclskaWR4XX0gPSAkdGFyZ2V0IF1dICYmIHsgdGFyZ2V0X2lkeD0kaWR4OyBicmVhazsgfQogIGRvbmUKICBbWyAkdGFyZ2V0X2lkeCBdXSB8fCB7IGVjaG8gIkVSUk9SOiBObyAkdGFyZ2V0IGZpZWxkIGZvdW5kIiA+JjI7IGV4aXQgMTsgfQoKICAjIHRoZW4sIGl0ZXJhdGUgb3ZlciBvdGhlciBsaW5lcwogIHdoaWxlIElGUz0sIHJlYWQgLXIgLWEgbGluZTsgZG8KICAgIHN1bT0kKCggc3VtICsgJHtsaW5lWyR0YXJnZXRfaWR4XX0gKSkKICBkb25lCn0KCmVjaG8gIiRzdW0iCg==
aWQsbmFtZQoxMCxhYmMKMjAseHl6CjMwLGRlZgo=
id,name
10,abc
20,xyz
30,def