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被排序)。我發現在計算總和並讀取行時顯示值更有趣。 –