Kulcs szerinti összegek

Van valami egyszerű GNU utility amivel kulcs szerint összegezhetők egész számok? Perlben, awk-ban meg tudom csinálni, csak macerás. Valami olyasmit keresek mint számlálásra a "uniq -c". Minél egyszerűbb, annál jobb.

Például:

Bemenet:
11780 httpd
11552 httpd
1400 crond

Kimenet:
23332 httpd
1400 crond

Hozzászólások

gugli nem segített maradt a csúnya perl-es megoldás

ps -eo size,comm | perl -e '$h{(split)[1]}+=(split)[0] while <>; print map "$_ $h{$_}\n", sort {$h{$a} <=> $h{$b}} keys %h;'

tényleg kell egyszerűbb mint az awk?


awk -e '{declare v[$2];v[$2]+=$1;}END{for(k in v)print k" "v[k];}'

veheted úgy, hogy hanyagul kódolok.
vannak alapvetések amik nem esnek nehezemre, nekem egyfajta gyakorlat. lehet vitatni, hogy jó, vagy sem.
a kód több nyelv és dialektus - és nem csak awk - keveréke.
inklább legyen olvasható, nem kellett beleférni 11 byte-ba.

Pedig az. man mawk és man nawk sem tartalmazza sem a "-e" opciót, sem a "declare" parancsot. (Speciel a man gawk sem, de attól nem is várom el, mer' ugye GNU-éknál a man valami csökevény, és az info doksiban kéne leírni mindent.)

Szóval rka most picit túllőtt a célon, mert sajnos a hordozhatóság elveszett :)

Nem értelmezi, hanem egy olyan kifejezésnek fogja fel, amelyben a konkatenálod a declare változó és a v[$2] tömbelem értékét... vagyis üres sztring.

Így látszik is:


$ echo "1 alfa" | gawk --lint '{declare v[$2]; v[$2]+=$1} END{ for(k in v) print k, v[k]}'
gawk: warning: statement may have no effect
gawk: (FILENAME=- FNR=1) warning: reference to uninitialized variable `declare'
gawk: (FILENAME=- FNR=1) warning: reference to uninitialized element `v["alfa"]'
alfa 1

@ubul_ plz zard le a code taget. Es legkozelebb hasznalj bbCode [ code ] taget. Nagyon koszonom.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Hát ha neked Perl-ben vagy awk-ban megírni macerás... A bölcsész (esetleg jogi) karhoz mit szólnál?

ubul! A legfelül, az első kommented végén csukd már be azt a taget, amit elfelejtettél.
(Direkt nem arra írom ezt a választ, hogy tudjad még módosítani)