1
我有,看起来像一个文件的特定行总和字段:awk中基于susbtring
100001001 0 130
100001001 0 610
100001001 0 210
100001001 0 100
100001001 1 80
100001002 0 300
100001002 0 200
100001002 0 100
100001003 0 200
100001003 0 100
100001004 1 50
我想总结第三场对每个相同的第1场,并排除这个总的线是含有1在第二场,通过类似以下的输出:
100001001 1050
100001002 600
100001003 300
我已经到目前为止的工作似乎没有出于某种原因的命令,有人可以帮助我?
awk ' $2 != 1 { sum[$1] += $3 }'
awk不是C.你现在用awk做什么就好像你在使用C++但只使用过程式编程,而只是C中存在的C++结构的子集 - 它缺少了C++的重点/好处语言。请参阅[@ Kent's answer](http://stackoverflow.com/a/36767662/1745001),如果您想了解如何使用awk,请阅读Arnold Robbins编写的Effective Awk Programming第4版。 –
@EdMorton Waou!谢谢!这不是一个惯用的版本,但它已经过测试。我会小心阅读这本书。 –
@EdMorton如果您特别提到关联数组,我会小心不要在我的答案中使用它们,以突出显示“END”部分不是必需的(如果第一列id被排序)。我发现在计算总和并读取行时显示值更有趣。 –