2013-10-30 35 views
0

我正在UNIX shell(OS X)中進行一些數據處理。shell:任何使用`uniq -c`的方法考慮到之前的`uniq -c`?

在使用uniq -c並做了一些進一步的基於查找的處理之後,我再次對數據進行排序,並且需要再次使用uniq -c,但請記住先前計數的結果(例如計數計數) 。

E.g.如果輸入的數據是這樣的:

36351 | 3 
36351 | 2 
36351 | 13 
2914 | 1 
2914 | 2 

那麼輸出應該是這樣的:(字段的順序並不顯着)

36351 | 18 
2914 | 3 

我如何在shell中執行此操作?

回答

3

我不知道的一種方式來獲得uniq做工作,但它是非常容易的使用awk:

{ c[$1] += $3; } 

END { for (s in c) printf("%s | %s\n", s, c[s]); } 
+0

如果一個鍵的值總是保證是相鄰的,你可以逃脫只有很少的記憶;但除非你有絕對的巨大投入,否則這並不重要。 – tripleee

+0

很好,謝謝! :)我想我應該真的學習awk! – cnst