Matrix Awk-从xyz格式矩阵中提取信息

Matrix Awk-从xyz格式矩阵中提取信息,matrix,awk,Matrix,Awk,我有一个x y z矩阵的格式: 1 1 0.02 1 2 0.10 1 4 0.22 2 1 0.70 2 2 0.22 3 2 0.44 3 3 0.42 ……等等。我感兴趣的是对特定x值(第1列)的所有z值(第3列)求和,并在单独的行上打印输出(以x值作为前缀),这样前面示例的输出将显示为: 1 0.34 2 0.92 3 0.86 我有一种强烈的感觉,awk是适合这份工作的工具,但对awk的了解实在是太少了,我非常感谢任何人能提供的帮助 提前谢谢。我同意这是一个很好的工作工具-这正是它

我有一个x y z矩阵的格式:

1 1 0.02
1 2 0.10
1 4 0.22
2 1 0.70
2 2 0.22
3 2 0.44
3 3 0.42
……等等。我感兴趣的是对特定x值(第1列)的所有z值(第3列)求和,并在单独的行上打印输出(以x值作为前缀),这样前面示例的输出将显示为:

1 0.34
2 0.92
3 0.86
我有一种强烈的感觉,awk是适合这份工作的工具,但对awk的了解实在是太少了,我非常感谢任何人能提供的帮助

提前谢谢。

我同意这是一个很好的工作工具-这正是它设计的任务类型

awk '{ sum[$1] += $3 } END { for (i in sum) print i, sum[i] }' data
对于给定的数据,我得到:

2 0.92
3 0.86
1 0.34
显然,您可以通过管道将输出传输到
sort-n
,并最终以排序顺序获得结果

要使用
awk
按顺序获得,您必须跳出POSIX
awk
的领域,使用GNU
awk
扩展函数
asorti

gawk '{ sum[$1] += $3 }
      END { n = asorti(sum, map); for (i = 1; i <= n; i++) print map[i], sum[map[i]] }' data  

明亮的这正是我想要的。非常感谢。
1 0.34
2 0.92
3 0.86