如何将CSV文件放入bash中的数组中?

时间:2018-10-25 22:20:38

标签: arrays bash shell

因此,我需要将CSV文件中某些列的内容放入数组中,以便可以对其进行操作。 我的文件如下所示:

userID,placeID,rating,food_rating,service_rating
U1077,135085,2,2,2
U1077,135038,2,2,1
U1077,132825,2,2,2
U1077,135060,1,2,2
U1068,135104,1,1,2
U1068,132740,0,0,0
U1068,132663,1,1,1
U1068,132732,0,0,0
U1068,132630,1,1,1
U1067,132584,2,2,2
U1067,132733,1,1,1
U1067,132732,1,2,2
U1067,132630,1,0,1
U1067,135104,0,0,0
U1067,132560,1,0,0
U1103,132584,1,2,1
U1103,132732,0,0,2
U1103,132630,1,2,0
U1103,132613,2,2,2
U1103,132667,1,2,2
U1103,135104,1,2,0
U1103,132663,1,0,2
U1103,132733,2,2,2
U1107,132660,2,2,1
U1107,132584,2,2,2
U1107,132733,2,2,2
U1044,135088,2,2,2
U1044,132583,1,2,1
U1070,132608,2,2,1
U1070,132609,1,1,1
U1070,132613,1,1,0
U1031,132663,0,0,0
U1031,132665,0,0,0
U1031,132668,0,0,0
U1082,132630,1,1,1

,我想获取PlaceID并将其保存在数组中,并将其放置在相同位置。我需要做的是获得每个PlaceID的平均评分。

我一直在尝试类似的东西

cut -d"," -f2  FileName >> var[@]

1 个答案:

答案 0 :(得分:0)

很难用bash来完成,但是用awk却相当敏捷:

awk -F',' 'NR>1 {sum[$2] += $3; count[$2]++}; END{ for (id in sum) { print id, sum[id]/count[id] } }' file.csv

说明:-F设置字段分隔符,您要提交2和字段3的平均值。最后,我们打印唯一的ID和平均值。我们处理除第一行(行数超过1)以外的所有行。