聚合文件上的行

聚合文件上的行

我有一个文件 abc.csv ,其中包含如下数据:

abc.csv:

A B C D
a x p 1
a x p 6
b y q 5
b y q 3
a x p 2
a y q 7

我需要编写一个脚本来awk获取输出文件。这可以用一个来完成吗awk

output.csv

a x p 9
b y q 8

状况:

  • ABCD 是文件头,仅供参考。
  • 我们需要聚合 A 列,以便输出文件中具有唯一的 A 列。
  • 仅聚合 B 列和 C 列值相似的那些行,否则忽略该行,如忽略第 6 行。
  • 在迭代每行时添加 D 列值。

答案1

Awk解决方案:

awk '{ k = $1 OFS $2 OFS $3 }
     { sum[k] += $4; count[k]++ }
     END{ for (i in sum) if (count[i] > 1) print i, sum[i] }' abc.csv

输出:

a x p 9
b y q 8

相关内容