2016-08-08 12 views
0

Ich habe eine Datei, die wie folgt aussieht:Fasst Zahlen in einer Datei

aaa 15 
aaa 12 
bbb 131 
bbb 12 
ccc 123 
ddddd 1 
ddddd 2 
ddddd 3 

Ich würde gerne einen Betrag für jedes einzelne Element in der linken Seite wie diese und auch berechnen, wie viele der einzelnen Elemente sind summiert:

aaa 27 - 2 
bbb 143 - 2 
ccc 123 - 1 
ddddd 6 - 3 

Wie würde ich dies mit AWK oder etwas Ähnliches erreichen?

Antwort

2

Sie können es in awk tun, indem die Summen in zwei Arrays sammeln, unter Verwendung von Spalte 1 als Schlüssel zu beiden Arrays (dann Rohr sort falls gewünscht):

awk '{sums[$1] += $2; counts[$1] += 1} 
    END {for (key in sums) {print key, sums[key], "-", counts[key]}}' file | sort 

Output:

aaa 27 - 2 
bbb 143 - 2 
ccc 123 - 1 
ddddd 6 - 3 
Verwandte Themen