【发布时间】:2014-03-25 20:15:39
【问题描述】:
我有一个格式如下的 CSV 文件:
Postcode,Count,Total
L1 3RT,20,345.65
我正在使用 awk 按邮政编码对计数和总数求和,但是我想对邮政编码的第一部分执行此操作(即 L1,从而组合 L1 3RT 和 L2 4XW 的值)。示例数据和现有 awk 命令如下所示。
CM1 4QR,979,32950.8
CM1 4QS,2,145.14
CM13 1DL,115,3771
AWK线
awk 'BEGIN { FS = "," } ; {sums[$1] += $2; totals[$1] += $3} END { for (i in sums) printf("%s,%s,%i\n", i, sums[i],totals[i])}' coach.csv
我希望输出是
CM1,981,33095.94
CM13,115,3771
【问题讨论】:
-
您可以使用空格作为分隔符再次通过 awk 管道
$1。然后您将获得邮政编码的第一部分,然后将其用作数组的索引。